最新SSH自动登录方案(RSA)

直接使用ssh连接到服务器时,需要手动输入密码。如果能够不用手动输入密码,且自动登录到SSH服务器的话,那就爽了。

经过一晚上的研究,终于搞定了。(原因在于旧的配置方式已不能正确使用了)

在进行配置前,先假定ssh客户端为ssh-client,ssh服务器为ssh-server(运行ssh服务的一边)。

二. 配置方法

1. 在ssh-client一边使用ssh-keygen生成一对rsa key

$ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/abee/.ssh/id_rsa): <回车>

Enter passphrase (empty for no passphrase): <回车>

Enter same passphrase again: <回车>

执行过程中连续回车即可,成功生成key后。private key 保存在~/.ssh/id_rsa,而public key保存在~/.ssh/id_rsa.pub

2. 在ssh-client一边使用ssh-add将刚生成的private key加入到ssh agent中(旧配置方式没有这步哟)

$ssh-add ~/.ssh/id_rsa

Identity added: id_rsa (id_rsa)

3. 将上述的public key(id_rsa.pub)的内容附加到ssh-server端的.ssh/authorized_keys中

$cat ~/.ssh/id_rsa.pub | ssh username@ssh-server "cat - >> authorized_keys"

4. 此时,配置完成啦。当再次使用ssh username@ssh-server登录时,不再使用密码啦。

三. 重启ssh-client

重启ssh-client后,需要重新使用ssh-add将上面的private key加入到ssh-agent中。因为ssh-agent重启后,其没有保留上次记录的private key,因此需要重新使用ssh-add将private key加入。

经过测试,对同一个private key进行多次ssh-add是没有问题的,总体感觉ssh-add或者ssh-agent会过滤重复的private key。

为了实现一次配置,重复使用。可以考虑将ssh-add的执行放到~/.profile下,每次重新登录X或者Console后,系统就会自动从~/.profile中的ssh-add命令将private key加到ssh-agent中。

$echo "ssh-add ~/.ssh/id_rsa" >> ~/.profile

这个方法在Ubuntu10.04测试通过。

四. 单个ssh-client与多个ssh-server

经过测试,在不止一个ssh-server的情况下,每一个ssh-server可以共用上述的publice key。而ssh-client仅用一个pirvate key.

五. 特别注意

1. 上述使用RSA方式进行ssh身份验证,具体可以查看man ssh。从上面两种环境可以看出,ssh-keygen产生的private key是关键文件,可以说这个就是ssh的登录密码。因此在ssh-client一侧,该文件的权限一般设置为600。

2. 在ssh-server侧存储public key的authorized_keys文件的权限至少是400,即最少也要用户可读。另外由于该public key可以计算出private key,且一般还会写入其他public key,所以其权限一般设置为700。

3. 一般情况下,对于多个ssh-server,最好的方案是针对每一个ssh-server使用唯一一对RSA key。这样可以防止一个private key泄漏后,只有一个ssh-server的ssh安全受影响,其他ssh-server不受影响(因为使用不同的RSA key)。

六. 与旧配置的区别

1. .ssh/目录在ssh-server/ssh-client端都没有权限要求,所以默认的755即可。

2. 上述配置均不需使用root权限,也不需要配置/etc/ssh/sshd_config(默认即可),更不需要重启ssh服务器。

最后,希望对大家有用哈。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/20006.html