導航:首頁 > 操作系統 > linux信任ssh

linux信任ssh

發布時間:2023-06-05 17:04:10

linux如何配置雙機SSH信任然後雙向免密碼登陸

一、實現原理
使用一種被稱為"公私鑰"認證的方式來進行ssh登錄。"公私鑰"認證方式簡單的解釋是:
首先在客戶端上創建一對公私鑰(公鑰文件:~/.ssh/id_rsa.pub;私鑰文件:~/.ssh/id_rsa),然後把公鑰放到伺服器上(~/.ssh/authorized_keys),自己保留好私鑰。當ssh登錄時,ssh程序會發送私鑰去和伺服器上的公鑰做匹配。如果匹配成功就可以登錄了。
二、實驗環境
A機:TS-DEV/10.0.0.163
B機:CS-DEV/10.0.0.188
三、Linux/Unix雙機建立信任
3.1
在A機生成證書
在A機root用戶下執行ssh-keygen命令,在需要輸入的地方,直接回車,生成建立安全信任關系的證書。
#
ssh-keygen
-t
rsa
注意:在程序提示輸入passphrase時直接輸入回車,表示無證書密碼。
上述命令將生成私鑰證書id_rsa和公鑰證書id_rsa.pub,存放在用戶家目錄的.ssh子目錄中。
3.2
查看~/.ssh生成密鑰的文件
#
cd
~/.ssh
#
ll
3.3
A對B建立信任關系
將公鑰證書id_rsa.pub復制到機器B的root家目錄的.ssh子目錄中,同時將文件名更換為authorized_keys,此時需要輸入B機的root用戶密碼(還未建立信任關系)。建立了客戶端到伺服器端的信任關系後,客戶端就可以不用再輸入密碼,就可以從伺服器端拷貝數據了。
#
scp
-r
id_rsa.pub
10.0.0.188:/root/.ssh/authorized_keys
3.4
B對A建立信任關系
在B機上執行同樣的操作,建立B對A的信任關系。
#
ssh-keygen
-t
rsa
#
cd
~/.ssh/
#
ll
#
scp
-r
id_rsa.pub
10.0.0.163:/root/.ssh/authorized_keys
如果想讓B,C同時可以scp不輸入密碼,傳輸A中的數據;
則要把B、C的公鑰都給
A;
操作步驟:把兩機器的id_rsa.pub中的數據都拷貝到A的/root/.ssh/authorized_keys文件中,一行表示一條;
A:
scp
-r
id_rsa.pub
10.0.0.163:/root/.ssh/authorized_keys
B:
scp
-r
id_rsa.pub
10.0.0.188:/root/.ssh/authorized_keys
測試
ssh
[email protected]
'hostname'
///
ssh
[email protected]
'hostname'
如果連接反應慢,請修改以下兩參數
/etc/ssh/sshd_config
GSSAPIAuthentication
no
UseDNS
no
然後重啟service
sshd
restart

㈡ linux下如何開通ssh,允許遠程登錄

ssh是可以代替telnet的一種遠程管理的方式.並且具有安全\快捷等優點的一種服務.

方法一:進入Xwindows,在shell窗口執行setup命令,選擇system service啟動sshd服務.

方法二:在/etc/ssh/sshd_config文件中,將permitRootLogin no|yes設置為允許root用戶遠程登錄

/etc/init.d/sshd start 啟動ssh服務

/etc/init.d/sshd stop關閉服務

啟動:
service sshd start
安裝過程:
1.以root身份登入系統(沒登入系統和沒有足夠的許可權都不能安裝,暈,這不是廢話)
2.檢查安裝系統時是否已經安裝SSH服務端軟體包:
rpm -qa|grep openssh
若顯示結果中包含openssh-server-*,則說明已經安裝,直接啟動
sshd服務就可以了(service sshd start).(其中*的內容是該包的版本,一般為3.5p1-6)
若無任何顯示,或顯示中不包含openssh-server-*則說明沒有安裝SSH服務端軟體包, 進入第3步
3.找到redhat 9.0 安裝光碟,放入光碟機中並載入光碟機
mount -t iso9660 /dev/cdrom /mnt/cdrom (載入光碟機命令)
4.查找光碟機中的SSH服務端軟體所在目錄,一般在/mnt/cdrom/RedHat/RPMS/目錄下,
可以先cd到該目錄下再用ls查看,如:ls openssh*,然後根據上面具體顯示直接安裝
rpm -ivh openssh-3.5p1-6 (如果第二步中顯示已經安裝該包就不要安裝)
rpm -ivh oeenssh-server-3.5p1-6
5.啟動sshd服務 /etc/rc.d/init.d/sshd start
netstat -a | more看有沒正常啟動
如果出現:
tcp 0 0 *:ssh *:* LISTEN
就說明正常啟動了
6.在windows 下用putty等SSH客戶端軟體連接測試,或直接在linux主機上輸入
ssh 測試,但必須要先安裝linux 下的SSH客戶端軟體包,即
openssh-clients-*,安裝過程和上面的服務端包相同
7.若能成功遠程登入,則說明SSH服務安裝配置成功,
否則很可能就是你的防火牆阻止連接了,重新配置防火牆或乾脆先停掉防火牆
(/etc/rc.d/init.d/iptables stop) 就可以連接了
或者service iptables stop

㈢ linux 配置ssh有幾種方法

直接使用Linux系 統的root帳戶登錄系統,在很多環境下是不允許。而且如果網路中的所有機器都能使用ssh登錄關鍵伺服器也是不允許的。這就要求我們需要使用一些手段, 現在root帳號的登錄,而且是只有指定的幾台機器才能登錄。當然限制登錄的ip這些通過網路設備也恩那個完成。但是我們只需要了解怎麼使用系統自己的功 能實現,這是每一個系統管理員都比較了解的。
1,修改ssh的配置文件,是root用戶只能通過本地登錄,不能通過遠程ssh連接伺服器。
vim /etc/ssh/sshd_config,
把#PermitRootLogin yes改成
PermitRootLogin no,然後重啟ssh伺服器,root用戶就不能通過ssh遠程登錄系統了,只能通過一個普通帳號su或者本地登錄。
2,可以同修改其他系統配置文件,使之能通過幾個指定的IP遠程ssh登錄伺服器。把下面這段放到root的.bash_profile文件中
ALLOWHOSTSLIST="192.168.163.1"
REMOTEHOST=$(env | grep SSH_CLIENT | awk '{print $1}' | awk -F "=" '{print $2}')
if echo "${ALLOWHOSTSLIST}" | grep "${REMOTEHOST}" > /dev/null
then :
else
exit
fi
結果就只能通過IP地址是192.168.163.1這台伺服器通過ssh遠程連接本伺服器了。
3,可以把需要ssh遠程伺服器的IP地址添加到/etc/hosts.allow,例如下面的操作:
sshd:192.168.163.1:allow #只允許這個IP地址ssh登錄
sshd:192.168.163.:allow #允許這個網段的所有IP地址ssh登錄
sshd:all:deny #拒絕所有沒有出現在上面的IP地址的ssh連接
4,也可以使用iptables指定能夠遠程ssh到伺服器的IP地址
iptables -A INPUT -p tcp --dport 22 -s 192.168.163.1 -j ACCEPT #允許這個IP地址ssh連接本伺服器
iptables -A INPUT -p tcp --dport 22 -s 192.168.163.0/24 -j ACCEPT #允許這個網段的所有IP遠程ssh連接本伺服器
iptables -A INPUT -p tcp --dport 22 -j DROP #除了上面允許的IP地址外,都拒絕使用ssh連接到伺服器

㈣ 如何建立linux ssh信任的方法與常見問題

在Linux伺服器之間建立信任關系,是很多線上服務系統的基礎性工作,這樣能便於程序在多台伺服器之間自動傳輸數據,或者方便用戶不輸入密碼就可以在不同的主機間完成登錄或者各種操作。

網上關於建立Linux信任關系(ssh trust)的中文文章有一些,但是寫得都不太詳細,這里匯總了方方面面的資料,把多機信任關系建立方法說說清楚(文/陳運文)

一 建立信任關系的基本操作

基本場景是想從一台Server伺服器直接登錄另一台,或者將Server伺服器的數據不需密碼驗證直接拷貝至Client伺服器,以下我們簡稱Server伺服器為S(待發送的數據文件在這台伺服器上),Client服務為C,信任關系的最簡單操作方法如下:

1 在S伺服器上,進入當前用戶根目錄下的隱藏目錄 .ssh,命令如下:

cd ~/.ssh

(註:目錄名前的點好」.」表示該文件夾是一個特殊的隱藏文件夾,ls命令下默認是看不到的,通過 ls –a 命令觀察到)

2 生成S伺服器的私鑰和公鑰:

ssh-keygen -t rsa

(註:rsa是一種加密演算法的名稱,此處也可以使用dsa,關於rsa和dsa演算法的介紹可見本文後半章節)

ssh-keygen生成密鑰用於信任關系生成

-此時會顯示Generating public/private key pair. 並提示生成的公鑰私鑰文件的存放路徑和文件名,默認是放在 /home/username/.ssh/id_rsa 這樣的文件里的,通常不用改,回車就可以

然後Enter passphrase(empty for no passphrase): 通常直接回車,默認不需要口令

Enter same passphrase again: 也直接回車

然後會顯式密鑰fingerprint生成好的提示,並給出一個RSA加密協議的方框圖形。此時在.ssh目錄下ls,就可以看到生成好的私鑰文件id_rsa和公鑰文件id_rsa.pub了

以下是各種補充說明:

注1:如果此時提示 id_rsaalready exists,Overwrite(y/n) 則說明之前已經有人建好了密鑰,此時選擇n 忽略本次操作就行,可以直接用之前生成好的文件;當然選y覆蓋一下也無妨

注2:公鑰用於加密,它是向所有人公開的(pub是公開的單詞public的縮寫);私鑰用於解密,只有密文的接收者持有。

3 在Server伺服器上載入私鑰文件

仍然在.ssh目錄下,執行命令:

ssh-add id_rsa

系統如果提示:Identity added: id_rsa (id_rsa) 就表明載入成功了

下面有幾個異常情況處理:

–如果系統提示:could not open a connection to your authentication agent

則需要執行一下命令:

ssh-agent bash

然後再執行上述的ssh-add id_rsa命令

–如果系統提示id_rsa: No such file or directory

這是系統無法找到私鑰文件id_rsa,需要看看當前路徑是不是不在.ssh目錄,或者私鑰文件改了名字,例如如果建立的時候改成 aa_rsa,則這邊命令中也需要相應改一下

-如果系統提示 command not found,那肯定是你命令敲錯字元了J

-提示Agent admitted failure to sign using the key,私鑰沒有載入成功,重試ssh-add

-注意id_rsa/id_rsa.pub文件不要刪除,存放在.ssh目錄下

4 把公鑰拷貝至Client伺服器上

很簡單,例如 scp id_rsa.pub [email protected]:~

5 ssh登錄到Client伺服器上,然後在Client伺服器上,把公鑰的內容追加到authorized_keys文件末尾(這個文件也在隱藏文件夾.ssh下,沒有的話可以建立,沒有關系)

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

以下是各種補充說明,遇到問題時可以參考:

注1:這里不推薦用文件覆蓋的方式,有些教程直接scp id_rsa.pub 到Client伺服器的authorized_keys文件,會導致之前建的其他信任關系的數據被破壞,追加到末尾是更穩妥的方式;

注2: cat 完以後,Client伺服器上剛才拷貝過來的id_rsa.pub文件就不需要了,可以刪除或移動到其它地方)

注3:ssh-keygen 命令通過-b參數可以指定生成的密鑰文件的長度,如果不指定則默認為1024,如果ssh-keygen –b 4096(最長4096),則加密程度提高,但是生成和驗證時間會增加。對一般的應用來說,默認長度已經足夠勝任了。如果是rsa加密方式,那麼最短長度為768 byte

注4:authorized_keys文件的許可權問題。如果按上述步驟建立關系後,仍然要驗證密碼,並且沒有其他報錯,那麼需要檢查一下authorized_keys文件的許可權,需要作下修改: chmod g-w authorized_keys

OK,現在試試在Server端拷貝一個文件到Client伺服器,應該無需交互直接就傳過去了。

但是此時從Client傳數據到Server伺服器,仍然是需要密碼驗證的。如果需要兩台伺服器間能直接互傳數據,則反過來按上述步驟操作一下就可以了

二 刪除伺服器間信任關系的方法

如果想取消兩台伺服器之間的信任關系,直接刪除公鑰或私鑰是沒有用的,需要在Client伺服器上,打開 ~/.ssh/ authorized_keys 文件,找到對應的伺服器的公鑰欄位並刪除

每個段落的開頭是ssh-rsa字樣,段尾是Server伺服器的帳號和ip(如下圖紅框),需要細心的找一下後刪除整段

密鑰文件內容和刪除Linux伺服器間信任關系的方法

三 各種可能遇到的情況和處理方法

–提示 port 22: Connection refused

可能的原因:沒有正確安裝最新的openssh-server,安裝方法如下

sudo apt-get install openssh-server

不支持apt安裝的,可以手工下載:

wget ftp.ssh.com/pub/ssh/ssh-3.2.9.1.tar.gz

–關於目錄和文件的許可權設置

.ssh目錄的許可權必須是700,同時本機的私鑰的許可權必須設置成600:

chmod 600 id_rsa

否則ssh伺服器會拒絕登錄

四 關於RSA和DSA加密演算法

在ssh-keygen命令中,-t參數後指定的是加密演算法,可以選擇rsa或者dsa

RSA 取名自演算法的三位提出者Ron Rivest, Adi Shamir, and Leonard Adleman的姓名首字母,作為一種非對稱加密演算法,RSA的安全性基於及其困難的大整數分解(兩個素數的乘積的還原問題)。關於RSA演算法原理的文章很多,感興趣的朋友可以找來讀一讀。

DSA = Digital Signature Algorithm,基於有限域離散對數難題,是Schnorr和ElGamal簽名演算法的變種,一般用於數字簽名和認證,被美國標准局(NIST)採納為數字簽名標准DSS(Digital Signature Standard),based on discrete logarithms computation.

DES = Digital Encryption Standard. Obsolete standard.

RSA演算法好在網路容易實現密鑰管理,便進行數字簽名,演算法復雜,加/解速度慢,採用非對稱加密。在實際用於信任關系建立中,這兩種方法的差異很微小,可以挑選其一使用。

五 關於SSH協議的介紹

SSH全稱Secure SHell,顧名思義就是非常安全的shell的意思,SSH協議是IETF(Internet Engineering Task Force)的Network Working Group所制定的一種協議。SSH的主要目的是用來取代傳統的telnet和R系列命令(rlogin,rsh,rexec等)遠程登陸和遠程執行命令的工具,實現對遠程登陸和遠程執行命令加密。防止由於網路監聽而出現的密碼泄漏,對系統構成威脅。

ssh協議目前有SSH1和SSH2,SSH2協議兼容SSH1。目前實現SSH1和SSH2協議的主要軟體有OpenSSH和SSH Communications Security Corporation公司的SSH Communications 軟體。前者是OpenBSD組織開發的一款免費的SSH軟體,後者是商業軟體,因此在linux、FreeBSD、OpenBSD、NetBSD等免費類UNIX系統種,通暢都使用OpenSSH作為SSH協議的實現軟體。因此,本文重點介紹一下OpenSSH的使用。需要注意的是OpenSSH和SSH Communications的登陸公鑰/私鑰的格式是不同的,如果想用SSH Communications產生的私鑰/公鑰對來登入到使用OpenSSH的linux系統需要對公鑰/私鑰進行格式轉換。

第一次登陸後,ssh就會把登陸的ssh指紋存放在用戶home目錄的.ssh目錄的know_hosts文件中,如果遠程系統重裝過系統,ssh指紋已經改變,你需要把 .ssh 目錄下的know_hosts中的相應指紋刪除,再登陸回答yes,方可登陸。請注意.ssh目錄是開頭是」.」的隱藏目錄,需要ls –a參數才能看到。而且這個目錄的許可權必須是700,並且用戶的home目錄也不能給其他用戶寫許可權,否則ssh伺服器會拒絕登陸。如果發生不能登陸的問題,請察看伺服器上的日誌文件/var/log/secure。通常能很快找到不能登陸的原因。

六 關於ssh_config和sshd_config文件配置的說明

/etc/ssh/ssh_config:

Host *

選項「Host」只對能夠匹配後面字串的計算機有效。「*」表示所有的計算機。

ForwardAgent no

「ForwardAgent」設置連接是否經過驗證代理(如果存在)轉發給遠程計算機。

ForwardX11 no

「ForwardX11」設置X11連接是否被自動重定向到安全的通道和顯示集(DISPLAY set)。

RhostsAuthentication no

「RhostsAuthentication」設置是否使用基於rhosts的安全驗證。

RhostsRSAAuthentication no

「RhostsRSAAuthentication」設置是否使用用RSA演算法的基於rhosts的安全驗證。

RSAAuthentication yes

「RSAAuthentication」設置是否使用RSA演算法進行安全驗證。

PasswordAuthentication yes

「PasswordAuthentication」設置是否使用口令驗證。

FallBackToRsh no

「FallBackToRsh」設置如果用ssh連接出現錯誤是否自動使用rsh。

UseRsh no

「UseRsh」設置是否在這台計算機上使用「rlogin/rsh」。

BatchMode no

「BatchMode」如果設為「yes」,passphrase/password(互動式輸入口令)的提示將被禁止。當不能互動式輸入口令的時候,這個選項對腳本文件和批處理任務十分有用。

CheckHostIP yes

「CheckHostIP」設置ssh是否查看連接到伺服器的主機的IP地址以防止DNS欺騙。建議設置為「yes」。

StrictHostKeyChecking no

「StrictHostKeyChecking」如果設置成「yes」,ssh就不會自動把計算機的密匙加入「$HOME/.ssh/known_hosts」文件,並且一旦計算機的密匙發生了變化,就拒絕連接。

IdentityFile ~/.ssh/identity

「IdentityFile」設置從哪個文件讀取用戶的RSA安全驗證標識。

Port 22

「Port」設置連接到遠程主機的埠。

Cipher blowfish

「Cipher」設置加密用的密碼。

EscapeChar ~

「EscapeChar」設置escape字元。

/etc/ssh/sshd_config:

Port 22

「Port」設置sshd監聽的埠號。

ListenAddress 192.168.1.1

「ListenAddress」設置sshd伺服器綁定的IP地址。

HostKey /etc/ssh/ssh_host_key

「HostKey」設置包含計算機私人密匙的文件。

ServerKeyBits 1024

「ServerKeyBits」定義伺服器密匙的位數。

LoginGraceTime 600

「LoginGraceTime」設置如果用戶不能成功登錄,在切斷連接之前伺服器需要等待的時間(以秒為單位)。

KeyRegenerationInterval 3600

「KeyRegenerationInterval」設置在多少秒之後自動重新生成伺服器的密匙(如果使用密匙)。重新生成密匙是為了防止用盜用的密匙解密被截獲的信息。

PermitRootLogin no

「PermitRootLogin」設置root能不能用ssh登錄。這個選項一定不要設成「yes」。

IgnoreRhosts yes

「IgnoreRhosts」設置驗證的時候是否使用「rhosts」和「shosts」文件。

IgnoreUserKnownHosts yes

「IgnoreUserKnownHosts」設置ssh daemon是否在進行RhostsRSAAuthentication安全驗證的時候忽略用戶的「$HOME/.ssh/known_hosts」

StrictModes yes

「StrictModes」設置ssh在接收登錄請求之前是否檢查用戶家目錄和rhosts文件的許可權和所有權。這通常是必要的,因為新手經常會把自己的目錄和文件設成任何人都有寫許可權。

X11Forwarding no

「X11Forwarding」設置是否允許X11轉發。

PrintMotd yes

「PrintMotd」設置sshd是否在用戶登錄的時候顯示「/etc/motd」中的信息。

SyslogFacility AUTH

「SyslogFacility」設置在記錄來自sshd的消息的時候,是否給出「facility code」。

LogLevel INFO

「LogLevel」設置記錄sshd日誌消息的層次。INFO是一個好的選擇。查看sshd的man幫助頁,已獲取更多的信息。

RhostsAuthentication no

「RhostsAuthentication」設置只用rhosts或「/etc/hosts.equiv」進行安全驗證是否已經足夠了。

RhostsRSAAuthentication no

「RhostsRSA」設置是否允許用rhosts或「/etc/hosts.equiv」加上RSA進行安全驗證。

RSAAuthentication yes

「RSAAuthentication」設置是否允許只有RSA安全驗證。

PasswordAuthentication yes

「PasswordAuthentication」設置是否允許口令驗證。

PermitEmptyPasswords no

「PermitEmptyPasswords」設置是否允許用口令為空的帳號登錄。

AllowUsers admin

「AllowUsers」的後面可以跟著任意的數量的用戶名的匹配串(patterns)或user@host這樣的匹配串,這些字元串用空格隔開。主機名可以是DNS名或IP地址。

㈤ Linux 下實現SSH互信

一、准備兩台伺服器:

A機:192.168.1.1

B機:192.168.1.2

二、雙機建立信任

1、在A機生成秘鑰證書

在root下執行ssh-keygen命令,一路回車,生成秘鑰證書

# ssh-keygen  -t  rsa  

2、查看生成秘鑰文件

# cd ~/.ssh  

# ll

文件:私鑰證書id_rsa、公鑰證書id_rsa.pub

3、A對B建立信任關系

3.1 將公鑰證書id_rsa.pub復制到機器B的root家目錄的.ssh子目錄中,同時將文件名更換為authorized_keys

# scp -r id_rsa.pub [email protected]:/root/.ssh/authorized_keys

3.2 若3.1報錯:No such file or directory

使用:# ssh--id -i id_rsa.pub [email protected]

ssh--id命令會自動將id_rsa.pub文件的內容追加到遠程主機root用戶下.ssh/authorized_keys文件中

3.3 查看B機器是否接收

# ssh 192.168.1.2  

# cd .ssh/   

# ls   

# cat authorized_keys

# exit

3.4 B對A建立信任,同上3的操作步驟

㈥ 如何使用SSH鏈接Linux

當在遠程Linux主機上設置好ssh服務後,就可以用ssh連接了。如果客戶端是linux系統,可以用ssh命令(這個是ssh客戶端)連接,格式:
ssh 用戶名@IP地址
例子:ssh [email protected]
它會提示是否信任這個主機並保存密鑰,輸入yes並回車,然後輸入登錄用戶的密碼就連上了。
如果客戶端是Windows系統,一般是用putty或者xshell來連接,他倆都是免費的軟體,putty還是綠色軟體,下載下來直接運行就可以用,不需要安裝,xshell可以用軟體管家之類的軟體安裝,操作方面都是圖形界面挺好操作的。

閱讀全文

與linux信任ssh相關的資料

熱點內容
linux開機啟動配置 瀏覽:367
androidstudio類注釋 瀏覽:135
如何在pdf中插入圖片 瀏覽:907
京山pdf 瀏覽:28
怎麼解除微信授權的app 瀏覽:168
dcs用什麼編程 瀏覽:326
黑馬程序員專輯獲取 瀏覽:873
加密技術的關鍵密鑰其好處有哪些 瀏覽:977
方言pdf 瀏覽:997
程序員格子襯衣搞笑圖 瀏覽:390
vxworks編譯版本 瀏覽:111
怎麼查看讀取相冊的app 瀏覽:206
那個空調用日立壓縮機 瀏覽:816
androidsdkr25下載 瀏覽:12
哪位程序員的名字是誰 瀏覽:568
蘋果手機底部怎麼放5個app 瀏覽:915
壓縮機出涼風 瀏覽:823
不能從文件夾看到迅雷 瀏覽:139
編程處理表格有意義嗎 瀏覽:438
java字元串回車換行 瀏覽:155