天天看点

关于SSH使用的一些经验

1 不能使用公钥验证登陆的解决:

Office的机器从某天开始突然不能允许我用public key来ssh 登陆了。排查了很久:

(1)首先看public key和private key是不是对的 -- 对的

(2)检查server端权限设置是不是~/.ssh(0700)和~/.ssh/authorized_keys(0600) --对的

于是使用sshd的debug模式来看一看:

sudo /usr/sbin/sshd -d -p 2000: 实现一个2000端口的one shot debug mode,

这样你可以在客户端 ssh -p 2000 HOSTNAME 来尝试一次登陆以提供debug信息。

然后看sshd的log (/var/log/auth.log) 看到 sshd[9564]: Authentication refused: bad ownership or modes for directory /home/xxxxx 。遂去看了一下$HOME的权限,原来不知道怎么给了组用户w权限。去掉以后就好了。

另外还要注意~/.ssh/config权限,只能是600

2 登录被要求输入两次密码 (Password, Response)

FreeBSD的/etc/ssh/ssh_config中默认Protocol 1,2。 所以如果使用version 1会这样, 比如

$ ssh -1 foo.bar.net

Password:

Response:

$ ssh -2 foo.bar.net

解决:修改Protocol 1,2 -> Protocol 2,1

3 想看登录时候的详细信息,比如本地和远端主机如何交互:

ssh -v foo.bar.net

想看更详细的:

ssh -vv foo.bar.net

想看更更详细的:

ssh -vvv foo.bar.net

想看更更更详细的:

请订阅中国电视报

4 关掉每次登录前Host Key的检查。就是每次登录一个陌生host前被询问:

The authenticity of host 'foo.bar.net (1.2.3.4)' can't be established.

DSA key fingerprint is dc:28:c4:30:85:11:75:8a:61:53:65:1a:a0:50:5e:32.

Are you sure you want to continue connecting (yes/no)?

修改~/.ssh/config

Host *

StrictHostKeyChecking no

这个选项默认的是ask,就是每次都询问

5 用一台主机做代理登录另目的主机(foo.bar.net):

Host foo.bar.net

User bfan

ProxyCommand ssh foo.bar.net -l 用户名 nc %h 22

6 选项 -o BatchMode=yes。 好处是用于脚本批量登录的时候(比如使用我的multissh.py脚本)的时候因为一些系统问题被提问密码,直接当作错误返回。 这样脚本可以当作登录失败重新尝试.

来源: http://apc999.blogspot.com/search/label/Python

继续阅读