免密碼ssh設定遇到的問題

2021-09-01 13:51:12 字數 3878 閱讀 4101

網上的方法如下:

$ 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...