1. 程式人生 > >SSH 無密碼登入 Linux

SSH 無密碼登入 Linux

SSH Key的知識

Linux系統有一個鑰匙環(keyring)的管理程式.鑰匙環受到使用者登入密碼的保護.當你登入Linux系統時,會自動解開鑰匙環的密碼,從而可訪問鑰匙環.SSH的金鑰和公鑰也儲存在鑰匙環.所以初次使用SSH金鑰登入遠端Linux伺服器時需要輸入一次SSH金鑰的密碼.而將來使用SSH金鑰登入時不再輸入密碼.Ubuntu的鑰匙環程式是seahorse.

SSH金鑰就好比是你的身份證明.遠端Linux伺服器用你生成的SSH公鑰來加密一條訊息,而只有你的SSH金鑰可以解開這條訊息.所以其他人如果沒有你的SSH金鑰,是無法解開加密訊息的,從而也就無法登入你的Linux伺服器.

SSH無密碼登入的設定就是這麼簡單。

無密碼登入Linux的設定步驟

SSH無密碼登入Linux的設定步驟:
1、首先我們在自己的Linux系統上生成一對SSH Key:SSH金鑰和SSH公鑰.金鑰儲存在自己的Linux系統上。
2、然後公鑰上傳到Linux伺服器.之後我們就能無密碼SSH登入了.SSH金鑰就好比是你的身份證明

一、在自己的Linux系統上生成SSH金鑰和公鑰
開啟終端,使用下面的ssh-keygen來生成RSA金鑰和公鑰.-t表示type,就是說要生成RSA加密的鑰匙

cd .ssh
ssh-keygen -t rsa

RSA也是預設的加密型別.所以你也可以只輸入ssh-keygen.預設的RSA長度是2048位.如果你非常注重安全,那麼可以指定4096位的長度。

ssh-keygen -b 4096 -t rsa

生成SSH Key的過程中會要求你指定一個檔案來儲存金鑰,按Enter鍵使用預設的檔案就行了.然後需要輸入一個密碼來加密你的SSH Key.密碼至少要20位長度.SSH金鑰會儲存在home目錄下的.ssh/id_rsa檔案中.SSH公鑰儲存在.ssh/id_rsa.pub檔案中。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/matrix/.ssh/id_rsa):  按Enter鍵
Enter passphrase (empty for
no passphrase):   輸入一個密碼 Enter same passphrase again:   再次輸入密碼 Your identification has been saved in /home/matrix/.ssh/id_rsa. Your public key has been saved in /home/matrix/.ssh/id_rsa.pub. The key fingerprint is: e1:dc:ab:ae:b6:19:b0:19:74:d5:fe:57:3f:32:b4:d0 [email protected] The key's randomart image is: +---[RSA 4096]----+ | .. | | . . | | . . .. . | | . . o o.. E .| | o S ..o ...| | = ..+...| | o . . .o .| | .o . | | .++o | +-----------------+

檢視.ssh/id_rsa檔案就會看到,這個檔案是經過加密的(encrypted),也就是用你輸入的密碼來加密。

less .ssh/id_rsa

這裡寫圖片描述

二、將SSH公鑰上傳到Linux伺服器
可以使用ssh-copy-id命令來完成

ssh-copy-id [email protected]-server

這裡寫圖片描述

輸入遠端使用者的密碼後,SSH公鑰就會自動上傳了.SSH公鑰儲存在遠端Linux伺服器的.ssh/authorized_keys檔案中。

上傳完成後,SSH登入就不需要再次輸入密碼了.但是首次使用SSH Key登入時需要輸入一次SSH金鑰的加密密碼。(只需要輸入一次,將來會自動登入,不再需要輸入金鑰的密碼.)

使用scp命令來傳送檔案時也不需要輸入密碼。

配置伺服器別名

雖然經過上面的配置,我們不用在每次登入時都輸入密碼。當仍然需要我們輸入使用者名稱和伺服器ip。有沒有可能把這一步驟也省略呢?答案是肯定的,通過配置伺服器別名的方式,登入時只需輸入別名即可。

一、開啟~/.ssh/config檔案,新增以下內容(如果木有 ~/.ssh/config 檔案的話就自個兒建一個吧)

Host server-alias              # server-alias為SSH連結的伺服器別名
HostName server-ip  # 伺服器地址
Port 22
User username       # 伺服器端使用者名稱
PreferredAuthentications publickey 
IdentityFile ~/.ssh/id_rsa     # 私鑰地址,預設為 ~/.ssh/id_rsa

二、驗證,以後即可通過以下命令登入遠端伺服器

ssh server-alias

常見問題及解決方案

一、生成金鑰並上傳至遠端主機後,任然不可用 。

1、開啟伺服器的 /etc/ssh/sshd_config 這個檔案,取消註釋

#AuthorizedKeysFile .ssh/authorized_keys

2、重啟伺服器的ssh服務。

#RHEL/CentOS系統
$ service sshd restart
#ubuntu系統
$ service ssh restart
#debian系統
$ /etc/init.d/ssh restart

3、執行ssh-copy-id 命令

ssh-copy-id 遠端使用者名稱@遠端IP地址

//如果不是預設埠22,是9001
ssh-copy-id -p 9001 遠端使用者名稱@遠端IP地址

二、ssh連線遠端主機時,出現 sign_and_send_pubkey: signing failed: agent refused operation 錯誤,並且還是需要輸入密碼。

此時,表示ssh-agent 已經在運行了,但是找不到附加的任何keys,就是說你生成的key,沒有附加到ssh-agent上,需要附加一下執行。

檢視hosts中是否配置了git伺服器的地址,那樣的話,會一直讓你輸入密碼

ssh-add

//當然你也可以檢視附加了哪些key
ssh-add -l
ssh 遠端使用者名稱@遠端IP地址

//如果不是預設埠22,是9001
ssh -p 9001 遠端使用者名稱@遠端IP地址

如果顯示下面的錯誤

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for [git.bbdservice.net]:51668 has changed,
and the key for the corresponding IP address [10.10.80.26]:51668
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
6e:92:c8:d6:f2:45:ae:ff:5f:1d:21:8b:01:52:8a:82.
Please contact your system administrator.
Add correct host key in /home/glowd/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/glowd/.ssh/known_hosts:1
  remove with: ssh-keygen -f "/home/glowd/.ssh/known_hosts" -R [git.bbdservice.net]:51668
ECDSA host key for [git.bbdservice.net]:51668 has changed and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

說明你連線的那一行訪問,驗證已經改變,/home/glowd/.ssh/known_hosts:1,刪除那一行,或者直接把整個known_hosts檔案刪除,重新連線一次就好了

相關推薦

SSH 無密碼登入 Linux

SSH Key的知識 Linux系統有一個鑰匙環(keyring)的管理程式.鑰匙環受到使用者登入密碼的保護.當你登入Linux系統時,會自動解開鑰匙環的密碼,從而可訪問鑰匙環.SSH的金鑰和公鑰也儲存在鑰匙環.所以初次使用SSH金鑰登入遠端Linux伺服器時

配置ssh無密碼登陸Linux

zed art 名稱 請求 需要 pre use 基於 lin Windows下面的話需要安裝git,或者其他能執行shell命令的軟件 1、首先要先修改SSH的配置文件 vi /etc/ssh/sshd_config#修改配置文件 #如果被#註釋了,就取消#號,改為

使用密匙讓putty(或ssh)自動登入Linux遇到幾個問題的解決方法

      在用SSH通過金鑰登入Linux時,遇到 server responded"No further authentication methods available" no more authentication methods a

ubuntu SSH 無密碼登入

#第一步:建立金鑰 使用金鑰登入需要先建立一對非對稱加密的金鑰, 使用ubuntu自帶的 ssh-keygen 金鑰生成工具即可生成 1.ssh-keygen -t rsa 一路回車 #第二步:用ssh-copy-id將公鑰複製到遠端機器中 2.ssh-copy-id -i ~/.ssh/i

ssh遠端登入Linux(ubuntu)

一般流程,如果有問題,按照下面步驟排查一遍即可 檢視ssh是否開啟 service ssh status service ssh start service ssh restart service ssh stop 如果沒有安裝 sudo apt-get install

Mac上使用SSL無密碼登入Linux伺服器

一.在本地生成公鑰和私鑰 cd ~/.ssh ssh-keygen -t rsa   之後回車兩次,注:(Enter passphrase (empty for no passphrase): 可以設定密碼),免密做好後首次登入要求輸入一次密碼,就輸入這裡的密碼。

ssh 遠端登入linux 系統

在命令列中輸入命令: ssh [email protected]_address -p port 之後系統會提示輸入密碼,輸入後即可登入 如果不新增-p選項,則預設是22埠 還可以使用-l選項輸入使用者名稱: ssh -l username ip_address -p port

ssh無密碼登入遠端主機執行特定命令的注意事項

最近的一個專案要結合使用rabbitmq、keepalived、supervisor。其中的一個場景為某個keepalived例項被提升為MASTER後需要到部署了rabbitmq client的遠端主機上kill掉這些client程序。 一般的思路為配置keepalive

SSH無密碼登入的原理及配置

一、SSH概念(百度) SSH 為 Secure Shell 的縮寫,由 IETF 的網路小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。利用 SSH 協

ssh 遠端登入linux 系統

登入遠端伺服器,在使用者根目錄下新建.ssh資料夾(如果不存在),在其中新建authorized_keys檔案(如果不存在),把id_rsa.pub新增到authorized_keys檔案中 mkdir -p ~/.ssh 這是在遠端伺服器上新建ssh資料夾 cat id_rsa.pub &g

使用ssh-keygen和ssh-copy-id三步實現SSH無密碼登入

from  http://blog.chinaunix.net/uid-26284395-id-2949145.html ssh-keygen  產生公鑰與私鑰對. ssh-copy-id 將本機的公鑰複製到遠端機器的authorized_keys檔案中,ssh-copy

運維~ssh-copy-id三步實現SSH無密碼登入ssh常用命令

ssh-keygen  產生公鑰與私鑰對. ssh-copy-id 將本機的公鑰複製到遠端機器的authorized_keys檔案中,ssh-copy-id也能讓你有到遠端機器的home, ~./ssh , 和 ~/.ssh/authorized_keys的權利

叢集中配置多臺計算機之間ssh無密碼登入的一種簡便方法

當我們在配置多臺計算,使之可以相互使用無密碼登入-ssh,之前都是一臺一臺的配置,現在一臺A上新增B,然後在另一臺B上再次新增A,這樣使得authorized_keys中的內容相同,但時並不是完全相同,比如新增順序。如果超過2臺,這種配置就相當複雜了,而且容易出錯。後來,在

ssh-copy-id三步實現SSH無密碼登入ssh常用命令

ssh-keygen  產生公鑰與私鑰對. ssh-copy-id 將本機的公鑰複製到遠端機器的authorized_keys檔案中,ssh-copy-id也能讓你有到遠端機器的home, ~./ssh , 和 ~/.ssh/authorized_keys的權利 第一步:

Mac下配置ssh無密碼登入遠端伺服器

記錄目的: 1. 使用ssh建立通道,進行資料傳輸; 2. Mac上實現遠端無密碼訪問 具體步驟 Mac上生成密匙對 ssh-keygen 配置~/.ssh/config

mac使用ssh-keygen和ssh-copy-id三步實現SSH無密碼登入

ssh-keygen :產生公鑰與私鑰對. ssh-copy-id :將本機的公鑰複製到遠端機器的authorized_keys檔案中,ssh-copy-id也能讓你有到遠端機器的home, ~.

設定centos7之間ssh無密碼登入

比如已經有了主機名為 LZY001,LZY002兩臺主機 1.在每臺主機上執行命令,並一路回車,生成加密檔案 ssh-keygen -t rsa2.在LZY001上執行命令: [[email protected] ~]#ssh-copy-id LZY002 按照提

SSH無密碼登入非root使用者設定

最近在設定同一臺伺服器的非root使用者免密碼登陸總是失敗 分析原因: 檢視/var/log/secure報Authentication refused: bad ownership or mod

linux下開啟SSH,並且允許root使用者遠端登入,允許無密碼登入

參考:http://blog.csdn.net/jia0511/article/details/8237698 1. 允許root使用者遠端登入 修改ssh服務配置檔案 sudo vi /etc/ssh/sshd_config 調整PermitRootLogin

linux ssh授權 無密碼登入

登入A伺服器 /root目錄下 #ssh-keygen -t rsa  讓輸入密碼時直接回車(3次) 會生成.ssh/id_rsa、id_rsa.pub兩個檔案,將id_rsa.pub複製到B機器的root目錄下,在B伺服器上建立檔案/root/.ssh/authoriz