通常情况下,我会使用非对称加密的方式来进行ssh的登录。
做法:
将公钥添加到 $HOME/.ssh/authorized_keys 文件中。
但是通常,会遇见各种各样的问题,导致失败。汇总如下:
0. 常用的排除手段,一般就是,双端开debug,clinet开启的方式如下,server还从来没与与遇见过需要开的情况,一般开client端就都搞定了。
/home/tong [[email protected]] [10:05] > ssh -vvvvv [email protected] OpenSSH_7.5p1, OpenSSL 1.1.0e 16 Feb 2017 debug1: Reading configuration data /home/tong/.ssh/config debug1: /home/tong/.ssh/config line 1: Applying options for * debug1: Reading configuration data /etc/ssh/ssh_config
1. 使用的私钥加密算法已经被openssh弃用,如 之前的 ssh-dss 就已经被新版openssh启用了,如果启用,可以如下配置:
/home/tong [[email protected]] [10:14] > cat ~/.ssh/config HOST * HostKeyAlgorithms +ssh-dss ForwardX11 yes
还可以通过命令和man手册,查看都支持那些算法。详细操作略。
2. 万恶的selinux搞得鬼, 禁掉禁掉,stopstop。
具体操作略。
然鹅,使用selinux一定有其好处以及必要性,所以还是需要花些时间,学习一下。
无意中看到的一个参考:
The SELinux contexts need to be right as well if you didn‘t disable that. The command "restorecon -R .ssh" should fix that.
3. authorized_keys 文件的权限不对,改成644, 记不太清了,记忆的深处好像是有这么回事的。。。
4. 同样的key,root用户好用,tong用户便不好用。debug之后,发现server返回的是:
debug3: receive packet: type 51
google之
https://superuser.com/questions/1137438/ssh-key-authentication-fails
当前的权限是:
[[email protected] ~]# ll -a /home/tong/ |grep ‘\.ssh‘ drwxrwxr-x. 2 tong tong 29 May 26 09:58 .ssh [[email protected] ~]# ll -a /root/ |grep ‘\.ssh‘ drwxr-xr-x 2 root root 29 May 26 10:04 .ssh [[email protected] ~]#
改过权限之后,好用了:
[[email protected] ~]$ ll -a |grep ‘\.ssh‘ drwxr-xr-x. 2 tong tong 29 May 26 09:58 .ssh [[email protected] ~]$ ll .ssh/ total 4 -rw-r--r-- 1 tong tong 389 May 26 09:58 authorized_keys [[email protected] ~]$
时间: 2024-08-25 23:29:28