當前位置:首頁 » 雲伺服器 » 如何實現伺服器之間的免密登錄

如何實現伺服器之間的免密登錄

發布時間: 2023-05-26 01:55:37

⑴ ssh免密碼登陸及其原理

[TOC]

ssh 無密碼登錄要使用公鑰與私鑰。linux下可以用用ssh-keygen生成公鑰/私鑰對,下面以CentOS為例。有機器A(192.168.64.21),B(192.168.64.22)。
目標:A通過ssh免密碼登錄到B

特意強調,使用參數可以省去生成公鑰/私鑰的回車步驟昌純

備註:

第一次登錄需輸入yes,現在A機可以無密碼登錄B機了,B登陸A,也同樣,在B中生成公鑰和私鑰對,將公鑰寫入authorized_keys中,然後同步A、B中的authorized_keys,使其一致就ok了。

也即就是:登錄的機子有私鑰,被登錄的機子要有登錄機子的公鑰,這個公鑰/私鑰對一般在私鑰宿主機產生。上面是用rsa演算法(不對稱加密演算法)的公鑰/私鑰對,當然也可以用dsa(對稱加密演算法:對應的文件是id_dsa,id_dsa.pub)

SSH是為建立在應用層和傳輸層基礎上的安全協議( OSI七層與TCP/IP五層網路架構詳解 )。SSH 是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議。利用SSH 協議可以有效防止遠程管世迅知理過程中的信息泄露問題。

從客戶端來看,SSH提供兩種級別的安全驗證:

只要知道帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但缺點是:不能保證你正在連接的伺服器就是你想連接的伺服器。以下是登錄驗證流程:

​ 當第一次鏈接遠程主機時,會提示你當前主機的」公鑰指紋」,詢問你是否繼續,如果選擇繼續後就可以輸入密碼進行登錄了,當遠程的主機接受以後,該台伺服器的公鑰就會保存到~/.ssh/known_hosts文件中。

這種驗證的前提是客戶端需要生成一對密鑰,將公鑰放到需訪問的遠程伺服器。這種驗證比上一種的好處是,不能仿冒真正的伺服器,因為要仿冒必須拿到客戶端生成的公鑰。缺點就是驗證等待過程稍長些。

1、在客戶端打開終端,執行 ssh-keygen ,該命令會默認在 ~/.ssh/ 目錄下創建 id_rsa 、 id_rsa.pub 兩個文件,分別為你的公鑰和私鑰

2、將公鑰 id_rsa.pub 文件拷貝到伺服器端的 ~/.ssh/authorized_keys 文件中,可通過scp拷貝

A要免密碼登錄到B,B首先要擁有A的公鑰,然後B要做一次加搜消密驗證。非對稱加密,公鑰加密的密文不能公鑰解開,只能私鑰解開

ssh-agent

ssh-agent是密鑰管理器,是一種控制用來保存公鑰身份驗證所使用的私鑰的程序

運行ssh-agent以後,使用ssh-add將私鑰交給ssh-agent保管,其他程序需要身份驗證的時候可以將驗證申請交給ssh-agent來完成整個認證過程

ssh-agent是管理多個ssh key的代理,受管理的私鑰通過ssh-add來添加
好處1:不用重復輸入密碼
用 ssh-add 添加私鑰時,如果私鑰有密碼的話,照例會被要求輸入一次密碼,在這之後ssh-agent可直接使用該私鑰,無需再次密碼認證。

好處2:不用到處部署私鑰
假設私鑰分別可以登錄同一內網的主機 A 和主機 B,出於一些原因,不能直接登錄 B。可以通過在 A 上部署私鑰或者設置 Forwarding(轉發) 登錄 B,也可以轉發認證代理連接在 A 上面使用ssh-agent私鑰登錄 B;可以在A上直接sftp傳文件到B上。

如這邊有一台機器是local,能通過公鑰直接登陸server1和server2。server1和server2之間無公鑰登陸。

現在要在server1上直接登陸server2,在local上執行

執行了之後就將私鑰給ssh-agent保管了,server1上面登陸server2的時候,需要私鑰驗證的時候直接找ssh-agent要就可以了
接下來登陸server1,注意-A

可以發現server1上多了/tmp/ssh-xxxxxxxxx/agent.xxxxx的socket,之後神奇的事發生了,在 server1上可直接進server2,只需執行如下命令,如果加了-A則可以繼續ssh forwarding(轉發) ,以至無限的機器forwarding。
ssh (-A) server2
同樣的原理可以試一下sftp, scp等基於ssh的命令。

如運行ssh-add,遇到 Could not open a connection to your authentication agent.。

解決: 需要ssh-agent啟動bash,或者說把bash掛到ssh-agent下面。

1 ssh免密碼登陸及其原理

⑵ windows Openssh-server(服務端-免密登陸設置)

windows10(其它版本請自行網路)
一、win10 安裝spenssh

1、服務端切換到C:ProgramDatassh下(首次啟動sshd後會生成該文件夾),打開sshd_config文件
2、修改 sshd_config 配置文件參數

3、重啟ssh-server服務

三、服務端設置完成, 設置做哪客戶端鏈接
1、客戶端生成ssh密瞎胡正鑰文件:

注: -d 4096 是設置加密位數(可不要磨悔); -t 任意字元 必須設置

2、需要將客戶端(celient)生成的 id_rsa.pub 文件密鑰, 追加 到服務端的 authorized_keys 文件中,[authorized_keys 文件路徑: windows系統在 C:UsersAdministrator.ssh 目錄下,沒有可新建]

四、測試ssh免密鏈接, 首次需要輸入密碼

⑶ ssh PublicKey免密登錄伺服器

建立PublicKey登陸步驟其實非常簡單,總結來說就是將客戶端生成的的ssh public key添加到伺服器的 ~/.ssh/authorized_keys 文件中,即可實現ssh的免密碼登錄。

在客戶端生成公鑰密鑰 附一篇 ssh-keygen 基本用法

然後一路回車, 使用默認值即可

使用 ls 命令可以看到當前目錄下的文件,有了個 id_rsa 和 id_rsa.pub ,前者是密鑰,後者是公鑰。

查看公鑰

復制公鑰

先嘗試進入 .ssh 看看目錄是否存在

若不存在則新建一個

然後修改許可權

接著再進入.ssh,然後修改將公鑰添加到authorized_keys

按 i ,然後將剛剛復制的密鑰粘貼到這里,按 esc ,再按 : ,輸入 wq 保存並退出
接著修改許可權

做好配置之後,通過ssh可以直接登錄了。

我們可以利用ssh的配置文件來簡化我們登陸的操作
配置文件在 ~/.ssh/config
我們可以修改這個文件(如果不存在則新建一個)

YourName可以改成任意名字
如果修改了埠則需要加上 Port 參數
還有各種各樣的參數可以查看幫助

配置完後可以這樣登陸伺服器

Enjoy it~

⑷ ssh 雙機互信:免密碼登錄設置步驟及常見問題

在 linux 系統管理中,設置免密碼登錄,進行機器的批量管理是最常用的一個方法。比如針對幾十甚至上百台線上機器,通常我們會設置一台「發布機」作為中央控制機對其它線上機器免密碼登錄,然後進行軟體、配置文件的分發、更新、部署。當然了,針對上面的問題,解決方案並非最優且唯一,比如你也可以用 expect 模擬自動輸入來完成自動登錄驗證這一過程,或者用現在一些開源的軟體自動化配置和部署工具,比如 Puppet,但這都不在本文的討論范疇,今天咱們要說的就是這種最原始、最有效、最直接的方式:免密碼登錄。

(1)問題:

假設:現有2台機器

1、個人機192.168.1.110

2、伺服器192.168.1.112

要使110無需密碼通過ssh登入112
(2)步驟

1、創建密鑰

2、復制公密到伺服器

3、添加公密到192.168.112的信任區域

註: 2,3兩步可由命令ssh--id一步到位

4、測試

此時整個步驟已經完成,你可以嘗試 ssh ip 或者 /etc/hosts 中的主機名試試。

(3)可能遇到的問題

1、在使用 ssh--id 錯誤提示

表現:
公鑰,私鑰已經生成,執行上述命令完畢出現如下錯誤:

$ ssh--id remote-machine

/usr/bin/ssh--id: ERROR: No identities found

解決方法:

g 之發現缺少公鑰路徑,通過 -i 加上即可:

2、ssh ip 可以成功登錄,ssh hostname 卻失敗

表現:

ssh hostname

ssh: connect to host localhost port 22: Connection refused

解決方法:

看下對方的主機名是不是在 /etc/hosts 文件中和 ip 做了映射,沒有就加上即可。

3、ssh 的配置目錄許可權問題

由於 ssh 的許可權直接關繫到伺服器的安全問題,因此 ssh 每次讀取配置都會校驗相關文件夾和文件的許可權,以防止許可權過大對外暴露。

表現:
設置了.ssh目錄,在authorized_keys設置了key後登錄還提示需要輸入密碼。

解決方法:

注意許可權,.ssh許可權700,authorized_keys許可權600,就KO啦!

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

4、ssh localhost:publickey 授權失敗

註:ssh可同時支持publickey和password兩種授權方式,publickey默認不開啟,需要配置為yes。
如果客戶端不存在.ssh/id_rsa,則使用password授權;存在則使用publickey授權;
如果publickey授權失敗,依然會繼續使用password授權。
不要設置 PasswordAuthentication no ,它的意思是禁止密碼登錄,這樣就只能本機登錄了!
5、ssh localhost:Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

最後重啟你的 linux 執行 ssh localhost
6、ssh localhost:需要密碼

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

7、ssh ip 或 hostname 均提示:connection refused

目標主機的ssh server端程序是否安裝、服務是否啟動,是否在偵聽22埠;
是否允許該用戶登錄;
本機是否設置了iptables規則,禁止了ssh的連入/連出;
具體請參考: http://hi..com/leejun_2005/item/bfc0ded296cb8ebf32db907e
(4)最後的問題

本文介紹的建立基於免密碼登錄,雙機互信的管理方式簡單、直接,但是安全就是個問題了,稍有不慎容易被一鍋端,建議加上防火牆的埠、ip 策略,有條件的話試試動態口令,這樣會更穩妥些。再有就是當機器規模達到上百、上千台的時候,如果對文件數據、機器狀態的實時同步、一致性的要求很高的時候,這種管理方式的弊端就出來了。

(5)Refer:

http://blogread.cn/it/article/6103?f=wb ssh--id幫你建立信任

http://www.lvtao.net/server/54.html ssh無密碼登入設置 ssh-keygen ssh--id

http://hi..com/leejun_2005/item/bfc0ded296cb8ebf32db907e SSH的安裝及登錄提示:connection refused的解決辦法

http://www.cnblogs.com/qcly/archive/2013/07/27/3219535.html 一次由SELinux引起的ssh公鑰認證失敗問題

⑸ 如何實現安全的免密碼ssh登錄

創建ssh公私鑰

首先你需要放棄使用的密碼登錄的方式,因為那種方式實在太讓人崩潰了. 下面我們開始使用一種被稱為「公私鑰「認證的方式來進行ssh登錄. 「公私鑰「認證方式簡單的解釋是

你需要創建一對公私鑰
然後把公鑰放到伺服器上, 自己保留好私鑰
當ssh登錄時,ssh程序會發送私鑰去和伺服器上的公鑰做匹配.如果匹配成功就可以登錄了

我們現在來點實際的, 我們有兩台機器: qian.jianingy.com(這是我們的伺服器, 實際上它是我的), nby.jianingy.com(這是我的筆記本). 首先,使用ssh-keygen程序在筆記本上創建公私鑰對

生成公私鑰
jianingy@nby:~$ ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/home/jianingy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
15:c6:44:59:bf:6f:7a:11:eb:cb:02:d4:aa:33:e0:ae jianingy@nby

ssh-keygen程序會尋問你把公私鑰文件存放在哪裡.根據傳統我們會把它放在~/.ssh裡面.如果你不想
追隨這個傳統, 你可能給花些時間游說那些ssh程序.至於公私鑰的名字, 用默認的id_rsa吧,道理是一樣的.
接下來輸入一個口令,用來保護這個私鑰. 我強烈建議你輸入這個口令而不是讓它為空(稍後我會解釋的). 現在公私鑰生成好了,
私鑰(identification)被保存成了id_rsa, 公鑰(public key)被保存成id_rsa.pub. 注意:
一定要保護好你的私鑰,他就像你家裡存家底的保險櫃的鑰匙一樣重要.
現在把doggy.pub拷貝到伺服器上去, 並且將其內孫帆容追加到一個叫~/.ssh/authorized_keys的文件里去
jianingy@nby:~$ cat /home/jianingy/.ssh/doggy.pub | ssh 192.168.1.9 "cat - >> ~/.ssh/authorized_keys"

好現在試試看ssh登錄吧. 如果你想了解更多可以試試看用ssh -v登錄.

使用密鑰登錄
jianingy@nby:~$ ssh qian.jianingy.com
Enter passphrase for key '/home/jianingy/.ssh/id_rsa':

現在輸入你的passphrase, 然後就能成功登錄了.的確, 到現在我們還不能無密碼登錄,
請再耐心點. 有個特例是, 如果你使用了空的passphrase,
那麼現在已經可以無密碼登錄了.但是我也必須提醒你這是很不安全的做法,一銷正旦有人復制了你的passphrase, 它就真的成了機房「任虧凱悔我行「了.

使用ssh-agent提供私鑰


下來是最關鍵的部分. 前面我們把輸入密碼變成了輸入passphrase,
這沒有帶來任何方便.但是,要知道有個傢伙能幫助我們自動輸入這個passphrase(只是看起來像是自動輸入而已).
我們只要輸入一次passphrase, 以後的工作就可以交給那傢伙了. 它就是ssh-agent(據我所知他和agent
smith沒有太多關系). 運行ssh-agent吧
jianingy@nby:~$ eval `ssh-agent`
jianingy@nby:~$ ssh-add

運行ssh-add添加密鑰
jianingy@nby:~$ ssh-add
Enter passphrase for /home/jianingy/.ssh/id_rsa:
Identity added: /home/jianingy/.ssh/id_rsa (/home/jianingy/.ssh/id_rsa)

好了,現在再次登錄伺服器, 我們已經沒有密碼的煩惱了.至於為什麼要用這么奇怪的方式運行ssh-agent, 你可以試著在命令行上輸入一個ssh-agent回車, 看看輸出什麼你就會明白了.

復用已經存在的ssh-agent


果你看了上面直接運行ssh-agent的輸出,你應該已經明白了ssh和ssh-agent是如何相互了解的. 沒錯,
通過環境變數ssh知道了與ssh-agent通信的unix
socket在哪裡.然而當我們打開一個新的終端時我們必須要重新設置這個環境變數.做為一個慵懶的系統管理員,這是不可忍受的.所以我用perl寫了這
腳本, 他可以找到以前的ssh-agent.

view sourceprint?
01.#!/usr/bin/env perl
02.# author: jianingy
03.# 2007/06/24
04.
05.use strict;
06.my $exist;
07.my @dirs = grep {-r $_} glob "/tmp/ssh-*";
08.foreach (@dirs) {
09. my @socks = glob("{$_}/agent.*");
10. next unless (@socks);
11. foreach (@socks) {
12. $exist = $_;
13. # check agent
14. unless (system "SSH_AUTH_SOCK=$_ ssh-add -l >/dev/null 2>&1") {
15. print "export SSH_AUTH_SOCK=$_\n";
16. exit 0;
17. }
18. }
19.}
20.
21.if ($exist) {
22. system "SSH_AUTH_SOCK=$exist ssh-add";
23. print "export SSH_AUTH_SOCK=$exist\n";
24.} else {
25. system "ssh-agent";
26. exec $0;
27.}

現在只需要在.bashrc里加入
eval `ssh-attach`

便可以在每次啟動終端的時候就能復用ssh-agent了.到了這里我們已經實現了免密碼的ssh登錄(當然至少要輸入一次passphrase, 但是相對於無數次的密碼輸入相信你不會在乎這一次的:P).

熱點內容
openwrt編譯取消跑碼 發布:2025-05-19 16:50:28 瀏覽:125
知道了寬頻賬號密碼如何連接 發布:2025-05-19 16:49:49 瀏覽:655
時間輪資料庫 發布:2025-05-19 16:45:20 瀏覽:269
ipad緩存垃圾怎麼清理 發布:2025-05-19 16:44:46 瀏覽:536
視頻加解壓 發布:2025-05-19 16:35:28 瀏覽:6
c語言大學教程第六版 發布:2025-05-19 16:04:21 瀏覽:741
androidvr播放器 發布:2025-05-19 15:55:32 瀏覽:965
我的世界pc如何創建伺服器 發布:2025-05-19 15:51:24 瀏覽:734
搶腳本 發布:2025-05-19 15:47:14 瀏覽:407
ct4哪個配置性價比最高 發布:2025-05-19 15:38:02 瀏覽:954