首页 » Network » Network-else » 正文

SSH配置免密码登录及注意点

原理

//图片来源于zhihu

Ubuntu A

sudo apt-get install openssh-server

/etc/ssh/ssh_config

RSAAuthentication yes
PubkeyAuthenticationyes
#AuthorizedKeysFile %h/.ssh/authorized_keys

chmod 644 authorized_keys

chmod 700 -R .ssh

 

Win7 B

ssh-keygen

 

chmod 600 lsb_id_rsa

 

B复制id_rsa.pub为A的.ssh/authorized_keys

1.ssh-copy-id(方便不用手工控制权限,小心覆盖原来的authorized_keys文件)ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<host>

2.scp

3.手动复制

 

注意点:

如果添加公钥后,还是无法访问,也可能是ServerB主机上面的一个文件known_hosts中已经存在ServerA的ip信息,删除重新访问即可。

Connection closed by $IP

可能是超过系统默认失败次数了,然后清理就ok了~【faillog -a;faillog -r】

在前面步骤都正确无误的情况下,每次远程登录还是提示让输入密码,这时候有可能是权限问题:

chmod 644 authorized_keys再次登录就ok了~【如果是Red Hat 5.6的话,最好改成600,否则认为是不安全的~】

证书如果有passphrase则第一次key登录要输入这个密码

要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效

使用私钥生成公钥
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

 

在远程登录的时候可能会发现,在输入完用户名后需要等很长一段时间才会提示输入密码。其实这是由于 sshd 需要反查客户端的 dns 信息导致的。可以通过禁用这个特性来大幅提高登录的速度。首先,打开 sshd_config 文件:

sudo nano /etc/ssh/sshd_config

找到 GSSAPI options 这一节,将下面两行注释掉:

#GSSAPIAuthentication yes #GSSAPIDelegateCredentials no然后重新启动 ssh 服务即可。

 

参考资料

https://blog.csdn.net/u012031380/article/details/80569217

https://blog.csdn.net/netwalk/article/details/12952051

 

 

Comment

please input captcha *