SSH 免密码登陆

开发工作中,经常需要使用ssh来登录服务器,密码一般都是机器生成的,特别难记,关键是机器多了这样也麻烦,所以配置一下ssh面密码登录,节省时间。

系统说明

本地机器:Ubuntu
服务器:CentOS

大概流程

需要服务器和本机都做一定的配置才能免密码登陆

本地机器配置

  1. 通过ssh-keygen产生RSA公私密钥对
1
$ ssh-keygen`

然后一路回车,不要输入任何密码和字符,最后在~/.ssh/文件夹中会生成两个文件id_rsaid_rsa.pub两个文件,然后需要修改问年间权限

1
$ chmod 775 ~/.ssh

id_rsa.pub上传到服务器的~/.ssh/文件夹下,其实也不用上传,直接把这个文件的内容复制然后在服务器的对应文件夹下创建文件,然后写入也是一样的。
2. 在~/.ssh/文件夹里创建配置文件config

1
2
3
4
Host my_server // 服务器别名
HostName 192.168.1.120 // 服务器ip
User root //登录用户名
Port 22 // ssh端口

服务器机器配置

  1. 修改/etc/ssh/sshd_config文件,将下面几行前面的注释去掉
    1
    2
    3
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile %h/.ssh/authorized_keys
    如果已经注释掉了就不用配置则这里了,
  2. 在用户目录下创建.ssh文件夹,如果有就不用创建了,具体路径为~/.ssh/
    然后在~/.ssh/文件夹下面创建authorized_keys文件,并将之前上传到服务器上的id_rsa.pub文件里的内容拷贝到authorized_keys中,保存之后重启ssh服务
1
2
3
4
$ cd ~/.ssh/
$ sudo cat id_rsa.pub > authorized_keys
$ sudo chmod 644 authorized_keys
$ sudo service sshd restart

本机测试

通过终端连接服务器

1
$ ssh my_server

**注意:**如果这一步出现bad owers等错误,记得要修改本机的文件权限

1
2
$ chmod 700 ~/.ssh
$ chmod go+rwx ~/.ssh/*