網上的方法如下:
$ ssh-keygen -t dsa -p '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
經試驗後還是需要密碼
ssh -vvv localhost
檢視debug資訊發現如下資訊:
unspecified gss failure. minor code may provide more information
credentials cache file '/tmp/krb5cc_1000' not found
經搜尋是許可權問題
需要修改即可:
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh/
轉文章如下
使用公鑰認證方式登入ssh可以免去輸入密碼的步驟,在某些情況下還是十分有用的。
基本步驟如下:
首先在客戶端生成公鑰和私鑰:
$ ssh-keygen -f ~/.ssh/filename
filename替換為實際的檔名
該命令會提示輸入口令以加密私鑰,如果不需要直接回車即可。
命令執行完畢後會在~/.ssh/下生成兩個檔案,乙個filename,這個是私鑰,乙個filename.pub,這個是公鑰。
然後將生成的公鑰新增到遠端ssh伺服器上,方法有兩種:
在客戶端直接新增:
$ ssh-copy-id -i .ssh/filename.pub user@server
如果能夠登入遠端伺服器,則可以將公鑰上傳至伺服器然後直接寫入對應帳號的authorized_keys檔案:
$ cat /tmp/filename.pub >> ~/.ssh/authorized_keys
理論上此時在客戶端應該可以使用公鑰直接登入了
$ ssh -i filename user@server
或者在~/.ssh/下建立配置檔案config,內容如下:
#server alias
host srv
#ssh username
user user
#remote server address
hostname server
#remote server port
port 22
#the public key filename(without .pub)
identityfile ~/.ssh/filename
然後輸入
$ ssh srv
就可以了。
但是,很多時候事情沒有那麼順利。
在本人嘗試的時候,到了這一步,仍然提示要輸入密碼才能登入,那我折騰那麼多是幹嘛呢(摔
可是問題還是要解決的,ssh有個-v引數可以檢視debug資訊,於是
$ ssh srv -v
得到的結果如下:
......
debug1: authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: next authentication method: gssapi-keyex
debug1: no valid key exchange context
debug1: next authentication method: gssapi-with-mic
debug1: unspecified gss failure. minor code may provide more information
credentials cache file '/tmp/krb5cc_0' not found
debug1: unspecified gss failure. minor code may provide more information
credentials cache file '/tmp/krb5cc_0' not found
debug1: unspecified gss failure. minor code may provide more information
debug1: next authentication method: publickey
debug1: offering public key: ***/.ssh/filename
debug1: authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: next authentication method: password
user@server's password:
只能確認配置檔案沒錯,確實找到了對應的公鑰,其他似乎看不出特別的問題,於是登入遠端伺服器檢視ssh登入日誌:
$ tail /var/log/secure -n 20
結果如下:
......
dec 1 23:11:21 testserver sshd[1275]: server listening on 0.0.0.0 port 22.
dec 1 23:11:21 testserver sshd[1275]: server listening on :: port 22.
dec 1 23:11:29 testserver sshd[1278]: authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys
dec 1 23:11:29 testserver sshd[1278]: authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys
dec 1 23:11:36 testserver sshd[1279]: connection closed by ::1
dec 1 23:11:39 testserver sshd[1281]: authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys
dec 1 23:11:39 testserver sshd[1281]: authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys
dec 1 23:11:48 testserver sshd[1282]: connection closed by ::1
問題似乎很明顯了,authorized_keys的許可權問題,搜尋了一下,發現此檔案許可權必須為600,這個測試使用者是本人新建的,檔案的許可權不正確,於是修改之:
$ chmod 600 ~/.ssh/authorized_keys
.ssh目錄的許可權必須為700:
$ chmod 700 ~/.ssh/
再次測試,終於能夠順利登入了。
相關參考:
rhel上ssh免密碼設定問題
按照網上操作,設定rhel5的ssh免密碼操作,總是不成功,依然需要輸入密碼,一查原來需要設定伺服器上的.ssh目錄和authorized keys的許可權 記下幾個命令備查 ssk keygen t rsa ssh user server mkdir ssh chmod 0700 ssh scp ...
SSH免密碼登入設定
我們使用ssh keygen在servera上生成 private和public金鑰 將生成的public金鑰拷貝到遠端機器serverb上後,就可以使用ssh命令無需密碼登入到另外一台機器serverb上。ssh keygen t rsa 連續三次回車,即在本地生成了公鑰和私鑰,不設定密碼 生成的...
SSH免密碼登入設定
機器a 192.168.8.4 機器b 192.168.8.5 實現在機器a上的使用者usera1可以通過ssh免密碼以機器b上的userb1身份登入到機器b 1,在機器a上建立使用者usera1 useradd usera1 在機器a對使用者usera1生成公鑰 私鑰對,以usera1登入 ssh...