天天看點

關于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

繼續閱讀