1.相同发布版本的ssh之间建立通道
一般排除权限上&key换行的问题,很少会发生什么问题,但也有一些非常诡异的问题,针对这些问题
我们可以使用以下两种方式来做详细的诊断。
ssh客户端程序的debug模式:
cmd:ssh -v [1|2|3]
一般情况下ssh的客户端都可以使用-v的方式来开启debug模式,后面的num是debug的level,数字越大,debug的信息越详细。
通过客户的debug可以看到整个ssh验证的过程,用的那个私钥文件,权限是否正确等等,基本上客户端的ssh问题应该都能够诊断出来。
sshd服务器端程序的debug模式
cmd:sshd -d [1|2|3] -p port
在一些用客户端debug模式仍然没有发现问题的情况下,可以试试起一个debug模式的sshd在其他port上,然后在客户端用ssh -vvv -p port来连,服务器端的debug模式的sshd会把相关的验证&连接的信息都在屏幕上显示出来,加上ssh客户端的debug,基本上所有的ssh问题就都可以查个究竟了。
2.Openssh&商业版的ssh2之间建立通道
openssh&商业版的ssh2的通道问题,之前都按照openssh或者是商业版的ssh的方式来构建两者之间的ssh通道,发现检查权限和各项配置都没问题,但通道死活不通仍需要密码。通过debug发现无法打开私钥文件,检查私钥文件及权限完全正常。问题在哪里?查找相关文档发现openssh的key和商业版本的ssh2生成的key格式是不一样的,ssh-keygen命令提供两种不同的key文件的转换,转换方法如下:
$ ssh-keygen
You must specify a key type (-t).
Usage: ssh-keygen [options]
-e Convert OpenSSH to IETF SECSH key file.
-i Convert IETF SECSH to OpenSSH key file.
例1:需要转换Openssh的私钥id_dsa为商业版ssh2的私钥:ssh-keygen -e -f id_dsa > id_dsa_ssh2
例2:需要转换商业版ssh2的公钥id_dsa_ssh2.pub为Openssh的公钥:ssh-keygen -i -f id_dsa_ssh2.pub >id_dsa.pub
例3:需要把openssh的公钥转换为商业版ssh2的公钥:ssh-keygen -i -f id_dsa_ssh2.pub >id_dsa.pub
例4:需要把商业版ssh2的私钥转换为商业版Openssh的私约:ssh-keygen -i -f id_dsa > id_dsa2
然后再通过openssh或者商业版ssh2的build通道方式,建立ssh通道即可。
3.解锁某个用户:
root下passwd -f -k -u dragoon即可。