密钥

生成密钥对:

1
$ ssh-keygen –t rsa

直接回车生成密钥对:id_rsa和id_rsa.pub,默认存储在/home/你的用户名/.ssh/下。

授权

顾名思义,想要终端自动替你完成密码的输入,那么你就得把获取密码的权限给它。

把id_rsa.pub追加到授权的key里面去:

1
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改授权key的权限:

1
$ chmod 600 ~/.ssh/authorized_keys

单机免密登录

修改SSH配置文件:

1
$ sudo gedit /etc/ssh/sshd_config

找到下面三行,将注释取消掉(就是将前面的#删掉,如果有的话),修改成如下:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

至此就配置好了单机环境上的SSH服务,测试一下:

1
2
$ service sshd restart // 重启ssh服务
$ ssh localhost // 连接普通用户测试

服务器免密SSH登录

以上只完成了单机环境的ssh免密登录,要远程连接其它的服务器,还需要进一步配置:
把我们的钥匙(公钥)送给服务器。

1
$ scp ~/.ssh/id_rsa.pub katherine@124.16.137.12:~/  // 将公钥复制到远程服务器的~/目录下

复制的时候还是需要输入服务器的密码,但是等我们把远程SSH免密登录配置好之后再连接就可以不用输入密码了。

我们已经把公钥传输到了目的服务器上,还需要把这个公钥追加到服务器的授权key中。(注意:如果服务器没有生成过ssh-key,那么.ssh目录需要手动创建,或者使用命令ssh-keygen -t rsa生成秘钥,它会自动在用户目录下生成.ssh目录。特别注意的是.ssh目录的权限问题,记得运行下chmod 700 .ssh命令)

连接上服务器后上使用命令:

1
2
3
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys  // 追加本地机器之前传输到这个服务器上的公钥到授权key中
$ rm ~/id_rsa.pub // 保险起见,删除公钥
$ service sshd restart // 重启ssh服务

回到客户机来,测试连接:

1
$ ssh katherine@124.16.137.12   // 应该可以直接连接服务器了