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