Linux遠端登入與無密碼登入解決方法

2021-08-27 16:55:54 字數 3893 閱讀 6146

一、遠端登入方法

[url= 是一種安全通道協議 , 主要用來遠端登入。在 rhel 5 系統中使用的是 openssh 伺服器由 openssh , openssh-server 等軟體包提供的 ( 預設已經安裝 ) ,並以將 sshd 新增為標準的系統服務。

使用方法如下:

$ ssh host

$ ssh username@host

$ ssh -p 222 username@host

-p: 指定訪問埠 ; 如果省略該引數 , 則預設訪問 ssh 服務的預設埠 22;

如果是第一次登入對方主機 , 則系統會出現一下提示 :

the authenticity of host 'host(192.168.0.21)' can't be established.

rsa key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.

are you sure you want to continue connecting (yes/no)?

意思是無法確認 host 主機的真實性,只知道它的公鑰指紋,問你還想繼續連線嗎?

輸入 yes 之後,系統會出現一句提示,表示 host 主機已經得到認可。

warning: permanently added 'host, 192.168.0.21 ' (rsa) to the list of known hosts.

然後要求輸入密碼:

$ password: (enter password)

此時,如果秘密正確,就可以登入了。

二、[url=作業系統[/url]無密碼登入方法

在信任環境下,如果每次遠端登入時,都要輸入密碼,感覺太浪費時間了,尤其是密碼很複雜、維護的伺服器比較多的情況下。

於是有了正常需求:不用輸入密碼即可實現遠端登入。

實現步驟如下:

1 、本地生成 一對秘鑰檔案 ( 公鑰和私鑰 ) ;

$ ssh-keygen

# 以上命令等價於 ssh-keygen -t rsa

#-t: 指定金鑰的型別 , 預設為 ssh-2 的 rsa 型別 ;

執行上面的命令後,系統會出現一系列提示,可以一路回車。 特別說明 ,其中有乙個問題是, 要不要對私鑰設定口令( passphrase ) ,如果擔心私鑰的安全,可以設定乙個。執行結束以後,會在 ~/.ssh/ 目錄下新生成兩個檔案: id_rsa.pub 和 id_rsa 。前者公鑰,後者是私鑰。

2 、將公鑰傳送到遠端主機 host 上面 ;

$ ssh-copy-id user@host

經過以上兩步之後,就可以實現無密碼遠端登入了 ( 遠端主機將使用者的公鑰儲存在 ~/.ssh/authorized_keys 檔案中 ) 。

三、常見問題:

1、 生成金鑰並上傳至遠端主機後,仍然無法實現無密碼登入?

開啟遠端主機的 /etc/ssh/sshd_config 這個檔案,以下幾行取消注釋。

#rsaauthentication=yes

#pubkeyauthentication=yes

#authorizedkeysfile=.ssh/authorized_keys

然後,重啟遠端主機的 ssh 服務。

#ubuntu 系統

$ service ssh restart

#debian 系統

$ /etc/init.d/ssh restart

2 、執行 ssh-copy-id 命令時,遠端伺服器的 ssh 服務埠不是 22 ,如下:

$ ssh-copy-id nameb@machineb

ssh: connect to host machineb port 22: connection refused

則使用如下命令:

$ ssh-copy-id "-p 22000 nameb@machineb"

四、補充內容:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

$ ssh-copy-id -u eucalyptus -i /home/ eucalyptus/.ssh/id_rsa.pub eucalyptus@remote_host

#-u : 給 eucalyptus 使用者 設定 無密碼登陸

# -i : 當沒有值傳遞時或 ~/.ssh/identity.pub 檔案不可訪問 ( 不存在 ) ,ssh-copy-id 將顯示 如下錯誤

/usr/bin/ssh-copy-id: error: no identities found

ssh 提供兩種方式的登入驗證:

1 、密碼驗證:以伺服器中本地系統使用者的登入名稱,密碼進行驗證。

2 、秘鑰對驗證:要求提供相匹配的秘鑰資訊才能通過驗證。通常先在客戶機中建立一對秘鑰檔案 ( 公鑰和私鑰 ) ,然後將公鑰檔案放到伺服器中的指定位置。

www.jbxue.com

注意:當密碼驗證和私鑰驗證都啟用時,伺服器將優先使用秘鑰驗證。

五、ssh服務的配置檔案 :

sshd 服務的配置檔案預設在 /etc/ssh/sshd_config ,正確調整相關配置項,可以進一步提高 sshd 遠端登入的安全性。

配置檔案的內容可以分為以下三個部分:

#ssh伺服器監聽的選項

#監聽的埠

port 22

#使用ssh v2協議

protocol 2

#監聽的位址為所有位址

listenadderss 0.0.0.0

#//禁止dns反向解析

usedns no

#使用者登入控制選項

#是否允許root使用者登入

permitrootlogin no

#是否允許空密碼使用者登入

permitemptypasswords no

#登入驗證時間(2分鐘)

logingracetime 2m

#最大重試次數

maxauthtries 6

#只允許user使用者登入,與denyusers選項相反

allowusers user

#登入驗證方式

#啟用密碼驗證

passwordauthentication yes

#啟用秘鑰驗證

pubkeyauthentication yes

#指定公鑰資料庫檔案

authorsizedkeysfile .ssh/authorized_keys

檢視 ssh 服務狀態命令: /etc/init.d/sshd status

重新啟動 ssh 服務命令: /etc/init.d/sshd restart

檢視 ssh 軟體的版本號命令: $ ssh -v

openssh_3.9p1, openssl 0.9.7a feb 19 2003 # 表明該系統正在使用 openssh

ssh: ssh secure shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu # 表明該系統正在使用 ssh2

當遠端主機的公鑰被接受以後,它就會被儲存在檔案 $home/.ssh/known_hosts 之中。下次再連線這台主機,系統就會認出它的公鑰已經儲存在本地了,從而跳過警告部分,直接提示輸入密碼。

每個 ssh 使用者都有自己的 known_hosts 檔案,此外系統也有乙個這樣的檔案,通常是 /etc/ssh/ssh_known_hosts ,儲存一些對所有使用者都可信賴的遠端主機的公鑰。

linux無密碼登入

假設有a b兩台機器 1 兩天機器上分別 執行ssh keygen t rsa,不用任何輸入,回車到底。2 把a b機器的 ssh id rsa.pub 內容彼此新增到對方 ssh authorized keys檔案中。解析 a機器的 ssh id rsa.pub在b的 ssh authorized...

Linux免密碼遠端登入

如何通過一台linux ssh遠端其他linux伺服器時,不要輸入密碼,可以自動登入。提高遠端效率,不用記憶各台伺服器的密碼。1.首先登入一台linux伺服器,此台做為母機 即登入其他linux系統用這台做為入口 執行一行命令生成key檔案 ssh keygen t rsa 然後一直回車,如下所示 ...

Linux遠端免密碼登入

1 生成秘鑰對 ssh keygen t rsa t 指定秘鑰的型別 rsa 秘鑰型別 秘鑰目錄 root ssh 私鑰 id rsa 鑰匙 公鑰 id rsa.pub 鎖 2 編輯認證檔案 遠端主機 mkdir ssh cd ssh vim authorized keys 把公鑰貼上複製 注意 認...