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

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

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

1.2 生成命令
在命令行窗口,輸入下面的命令,即可生成一對公鑰和私鑰。
-C:為密鑰添加注釋,通常用于標識密鑰。如果忽略此選項,則會使用用戶名@主機名來當做密鑰注釋添加到密鑰中。
-f:用戶指定密鑰生成的路徑和密鑰名稱,默認情況下,密鑰將保存到
~/.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 注意事項
在Windows中,如果當前的用戶名中包含漢字,在未指定密鑰生成的路徑的情況下,會亂碼。

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

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

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

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

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

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

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

如果我們的私鑰并不存儲在當前用戶的.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 效果
如下圖所示,直接通過配置文件中的別名,完成免密登錄。

四. 服務器端公鑰位置修改
在服務器端的/etc/ssh/sshd_config文件中,有關(guā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:當前用戶的主目錄

修改完畢之后,同樣需要在服務器端重啟一下ssh服務,確保配置文件實時反映。
/etc/init.d/ssh restart
五.REMOTE HOST IDENTIFICATION HAS CHANGED!問題
當?shù)谝淮芜B接某個 SSH 服務器時,ssh 或 sftp 會把遠程服務器的 host key(主機公鑰)指紋 存在本地的 ~/.ssh/known_hosts 文件中。
以后再次連接該主機時,會用保存的主機公鑰與服務器當前提供的公鑰進行比較:
- 如果匹配 ?,則連接繼續(xù)。
- 如果 不匹配 ?(比如遠程主機重新安裝、密鑰更新或 IP 被他人占用),就會出現(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
在確保要連接的遠程服務器安全的前提下,可通過如下方式解決
刪除host文件中的舊主機的記錄
ssh-keygen -R [192.168.3.23]:2222
再一次連接目標主機時,會出現(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 之后它會把新的 host key 存入 known_hosts 文件中,此后不會再有提示(除非主機密鑰再次變化)。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux系統(tǒng)修改環(huán)境變量的常用方法
這篇文章主要給大家介紹了Linux系統(tǒng)修改環(huán)境變量的常用方法,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-02-02
linux?docker?neo4j導出方式(windows導入)
在Docker中無法直接停止Neo4j服務備份,需創(chuàng)建臨時容器并掛載宿主機/backup目錄,確保版本一致及權(quán)限設置,導出文件后退出容器即可在宿主機備份目錄獲取數(shù)據(jù)2025-08-08
Linux中網(wǎng)絡性能優(yōu)化與監(jiān)控實戰(zhàn)詳細指南
在高并發(fā)場景下,Linux服務器的網(wǎng)絡性能直接影響用戶體驗,這篇文章將全面解析Linux網(wǎng)絡性能優(yōu)化的核心方法,感興趣的小伙伴可以學習一下2025-04-04
關(guān)于opensips用戶認證配置文件 opensips.cfg 使用介紹
本篇文章小編為大家介紹,關(guān)于opensips用戶認證配置文件opensips.cfg使用介紹。需要的朋友參考下2013-04-04

