Linux ssh免密登錄配置全過(guò)程
一. 密鑰生成
1.1 生成工具
1.1.1 OpenSSH
Win10系統(tǒng)默認(rèn)安裝了,OpenSSH

在C:\Windows\System32\OpenSSH\路徑中,可以看到可執(zhí)行文件。

1.1.2 Git
如果系統(tǒng)中安裝了Git,那么在默認(rèn)的安裝路徑C:\Program Files\Git\usr\bin中也可找到ssh可實(shí)行文件。

1.2 生成命令
在命令行窗口,輸入下面的命令,即可生成一對(duì)公鑰和私鑰。
-C:為密鑰添加注釋,通常用于標(biāo)識(shí)密鑰。如果忽略此選項(xiàng),則會(huì)使用用戶名@主機(jī)名來(lái)當(dāng)做密鑰注釋添加到密鑰中。
-f:用戶指定密鑰生成的路徑和密鑰名稱,默認(rèn)情況下,密鑰將保存到
~/.ssh/id_rsa(私鑰)~/.ssh/id_rsa.pub(公鑰)
# windows中 ssh-keygen -t rsa -C "fengyehong123@example.com" -f C:\Users\用戶名稱\.ssh\ubuntu22_key # linux中 ssh-keygen -t rsa -C "fengyehong123@example.com" -f ~/.ssh/id_rsa
1.3 注意事項(xiàng)
在Windows中,如果當(dāng)前的用戶名中包含漢字,在未指定密鑰生成的路徑的情況下,會(huì)亂碼。

使用Git自帶的ssh工具進(jìn)行生成,可以避免漢字用戶名的亂碼問(wèn)題,但是默認(rèn)情況下Win10自帶的OpenSSH,在環(huán)境變量中的權(quán)限高于Git中的權(quán)限,所以直接在命令行中輸入ssh-keygen命令,調(diào)用的是OpenSSH的ssh命令,并非Git中的命令。

1.4 解決路徑中的用戶名亂碼
方式1:指定生成密鑰的路徑中不包含漢字

方式2:直接使用git命令行窗口進(jìn)行生成(此時(shí)使用的是git的ssh工具)

方式3:修改環(huán)境變量,降低OpenSSH工具的優(yōu)先順(此時(shí)使用的是git的ssh工具)

二. 將公鑰配置到目標(biāo)服務(wù),免密登錄
2.1 方式1 ssh-copy-id命令行工具
通過(guò)ssh-copy-id指定本地公鑰的路徑,傳輸?shù)侥繕?biāo)服務(wù)器上
ssh-copy-id -i ~/.ssh/id_rsa.pub apluser@192.168.118.136
下圖所示,通過(guò)Git的命令行窗口,將公鑰配置到目標(biāo)服務(wù)器上

公鑰傳輸完畢之后,在目標(biāo)服務(wù)器的~/.ssh/authorized_keys路徑中可以看到。

2.2 方式2 手動(dòng)添加
可以將公鑰上傳到服務(wù)器,然后添加到authorized_keys文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
由于是手動(dòng)添加,所以需要在服務(wù)器端重啟一下ssh服務(wù)
/etc/init.d/ssh restart
2.3 效果
如果我們的私鑰存儲(chǔ)在當(dāng)前用戶的.ssh文件夾中,輸入ssh apluser@192.168.118.136即可免密登錄。

如果我們的私鑰并不存儲(chǔ)在當(dāng)前用戶的.ssh文件夾中,指定私鑰的位置,即可完成免密登錄。
ssh apluser@192.168.118.136 -i 私鑰的位置

三. 免密登錄config文件配置
3.1 配置文件內(nèi)容
config
Host ubuntu_22 HostName 192.168.118.136 User apluser Port 22 StrictHostKeyChecking no # 指定密鑰的位置 IdentityFile D:\id_rsa
3.2 效果
如下圖所示,直接通過(guò)配置文件中的別名,完成免密登錄。

四. 服務(wù)器端公鑰位置修改
在服務(wù)器端的/etc/ssh/sshd_config文件中,有關(guān)于認(rèn)證文件的配置
如果不想讓公鑰存儲(chǔ)在默認(rèn)路徑下,可修改AuthorizedKeysFile的相關(guān)內(nèi)容,指定公鑰路徑
apluser@ubuntu221:~$ ls -l /etc/ssh/sshd_config -rw-r--r-- 1 root root 3255 Aug 9 02:33 /etc/ssh/sshd_config apluser@ubuntu221:~$ apluser@ubuntu221:~$ grep AuthorizedKeysFile /etc/ssh/sshd_config #AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
修改sshd_config配置文件,需要root用戶權(quán)限

%h:當(dāng)前用戶的主目錄

修改完畢之后,同樣需要在服務(wù)器端重啟一下ssh服務(wù),確保配置文件實(shí)時(shí)反映。
/etc/init.d/ssh restart
五.REMOTE HOST IDENTIFICATION HAS CHANGED!問(wèn)題
當(dāng)?shù)谝淮芜B接某個(gè) SSH 服務(wù)器時(shí),ssh 或 sftp 會(huì)把遠(yuǎn)程服務(wù)器的 host key(主機(jī)公鑰)指紋 存在本地的 ~/.ssh/known_hosts 文件中。
以后再次連接該主機(jī)時(shí),會(huì)用保存的主機(jī)公鑰與服務(wù)器當(dāng)前提供的公鑰進(jìn)行比較:
- 如果匹配 ?,則連接繼續(xù)。
- 如果 不匹配 ?(比如遠(yuǎn)程主機(jī)重新安裝、密鑰更新或 IP 被他人占用),就會(huì)出現(xiàn)類似于下面的警告
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 RSA key sent by the remote host is
SHA256:OYtwkILXy0dkzCTnO+2YclxZVOzQw9SzBHuaF3ve6Is.
Please contact your system administrator.
Add correct host key in /c/Users/Admin/.ssh/known_hosts to get rid of this message.
Offending RSA key in /c/Users/Admin/.ssh/known_hosts:2
Host key for [192.168.3.23]:2222 has changed and you have requested strict checking.
Host key verification failed.
Connection closed
在確保要連接的遠(yuǎn)程服務(wù)器安全的前提下,可通過(guò)如下方式解決
刪除host文件中的舊主機(jī)的記錄
ssh-keygen -R [192.168.3.23]:2222
再一次連接目標(biāo)主機(jī)時(shí),會(huì)出現(xiàn)類似于下面這種提示
The authenticity of host '[192.168.3.23]:2222' can't be established. RSA key fingerprint is SHA256:OYtwkILXy0dkzCTnO+2YclxZVOzQw9SzBHuaF3ve6Is. Are you sure you want to continue connecting (yes/no)?
輸入 yes 之后它會(huì)把新的 host key 存入 known_hosts 文件中,此后不會(huì)再有提示(除非主機(jī)密鑰再次變化)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux UDP網(wǎng)絡(luò)編程套接字sockets介紹
文章主要講解了IP地址、端口號(hào)、Socket及TCP/UDP協(xié)議的基礎(chǔ)知識(shí),重點(diǎn)包括地址結(jié)構(gòu)、字節(jié)序轉(zhuǎn)換、網(wǎng)絡(luò)通信模型與實(shí)現(xiàn),強(qiáng)調(diào)Socket作為應(yīng)用層與網(wǎng)絡(luò)層交互的接口,以及TCP可靠傳輸與UDP高效但不可靠傳輸?shù)膮^(qū)別2025-08-08
apache ab工具頁(yè)面壓力測(cè)試返回結(jié)果含義解釋
這篇文章主要介紹了apache ab工具頁(yè)面壓力測(cè)試返回結(jié)果含義解釋,ab工具的使用非常簡(jiǎn)單,但返回結(jié)果中的數(shù)據(jù)有點(diǎn)多,看不懂的話就需要看看本文了,需要的朋友可以參考下2015-07-07
Linux系統(tǒng)之備份與恢復(fù)全過(guò)程
Linux備份常用tar打包與dump/restore命令,dump支持分卷/增量備份(0級(jí)全備,1-8級(jí)差備),需處理安裝錯(cuò)誤并按層級(jí)順序恢復(fù),restore可查看、還原備份,配合crontab實(shí)現(xiàn)自動(dòng)備份2025-09-09
CentOS7升級(jí)內(nèi)核kernel5.0版本
這篇文章主要介紹了CentOS7升級(jí)內(nèi)核kernel5.0版本,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
Xshell無(wú)法連接Ubuntu的問(wèn)題及解決方案
這篇文章主要介紹了Xshell無(wú)法連接Ubuntu的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03

