关于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 refu sed: 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
Password:


解决:修改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):
修改~/.ssh/config
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

你可能感兴趣的:(ssh,职场,经验,休闲)