Linux遠程登入和無密碼登入方法

來源:互聯網
上載者:User

   一、遠程登入方法

  SSH 是一種安全通道協議 , 主要用來遠程登入。在 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)

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

  二、無密碼登入方法

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

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

  實現步驟如下:

  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 root@192.168.0.2

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

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

  五、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 ,儲存一些對所有使用者都可信賴的遠程主機的公開金鑰。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.