0、寫在前面
我們通常使用SSH 客戶端來(lái)遠(yuǎn)程使用 Linux 服務(wù)器。但是,一般的密碼方式登錄,容易有密碼被暴力破解的問題。所以,一般我們會(huì)將 SSH 的端口設(shè)置為默認(rèn)的 22 以外的端口,或者禁用 root 賬戶登錄。但是即使是將端口設(shè)置為22之外的端口也容易泄露。為了保證服務(wù)器安全,此時(shí)希望使用密鑰方式登錄。而且使用秘鑰登錄能夠避免每次登錄時(shí)反復(fù)輸入賬戶密碼。
密碼登錄
- 優(yōu)勢(shì)
- 配置簡(jiǎn)單:只需要設(shè)個(gè)密碼就行
- 登錄簡(jiǎn)單:在任意設(shè)備上只需要輸入賬號(hào)密碼就能登錄目標(biāo)服務(wù)器
- 劣勢(shì)
- 麻煩:每次登錄都需要輸入賬號(hào)密碼
密鑰登錄
- 優(yōu)勢(shì)
- 快捷:避免每次登錄時(shí)反復(fù)輸入賬戶密碼
- 安全:密鑰文件相當(dāng)于是超長(zhǎng)超復(fù)雜的密碼,暴力破解基本沒戲,只有本地有密鑰文件才能登錄服務(wù)器
- 劣勢(shì)
- 要從一臺(tái)設(shè)備登錄某臺(tái)服務(wù)器,使用前必須先將密鑰文件下載到該設(shè)備上
總結(jié)一下,根據(jù)辯證法的原理,優(yōu)勢(shì)和劣勢(shì)都是相對(duì)的,沒有十全十美的辦法。
1、SSH密鑰登錄原理
1.1 密鑰登錄的原理是:
- 利用密鑰生成器制作一對(duì)密鑰——公鑰和私鑰。
- 將公鑰添加到服務(wù)器的某個(gè)賬戶上,
- 將私鑰下載到客戶端,客戶端利用私鑰即可完成認(rèn)證并登錄。
1.2 非對(duì)稱加密算法:
-
RSA加密算法是經(jīng)典的非對(duì)稱加密算法,其基本流程如下:
- 用密鑰生成器構(gòu)建一對(duì)密鑰——公鑰和私鑰。然后將公鑰安裝到服務(wù)器,私鑰發(fā)送到客戶端。
- 服務(wù)器向客戶端發(fā)送數(shù)據(jù)的時(shí)候用公鑰進(jìn)行加密,客戶端收到數(shù)據(jù)后用私鑰解密。
- 客戶端向服務(wù)器發(fā)送數(shù)據(jù)的時(shí)候用私鑰進(jìn)行加密,服務(wù)器收到數(shù)據(jù)后用公鑰解密。
缺點(diǎn)在于:如果公鑰在傳輸中泄漏,則黑客可以用公鑰破解客戶端發(fā)送的數(shù)據(jù)。
1.3 ssh密鑰認(rèn)證登錄原理
參考:
SSH公鑰登錄(私鑰認(rèn)證)原理
什么叫SSH?原理詳解,看這一篇就夠了!
1.4 .ssh/里面的文件作用解釋
id_rsa :私鑰,與公鑰配對(duì)使用。公鑰加密的數(shù)據(jù)用私鑰可以解密。既然是私,就不要亂發(fā)給別人,不然
id_rsa.pub :公鑰,公鑰相當(dāng)于你的機(jī)器的身份信息。你想登錄別臺(tái)機(jī)器,你就把公鑰發(fā)給他,并叫他安裝到authorized_keys。
authorized_keys: 里面記錄了服務(wù)器授權(quán)的所有公鑰
known_hosts:ssh會(huì)把你每個(gè)你訪問過計(jì)算機(jī)的公鑰(public key)都記錄在~/.ssh/known_hosts。當(dāng)下次訪問相同計(jì)算機(jī)時(shí),OpenSSH會(huì)核對(duì)公鑰。如果公鑰不同,OpenSSH會(huì)發(fā)出警告, 避免你受到DNS Hijack之類的攻擊。
2、配置SSH密鑰登錄
建議流程:
用戶在本地個(gè)人電腦生成一個(gè)密鑰對(duì),然后將公鑰上傳并安裝到服務(wù)器上。具體流程參考:2.3 在服務(wù)器上安裝公鑰
2.1 配置SSH,打開秘鑰登錄功能、關(guān)閉密碼登錄功能(管理員做)
- 使用vim 編輯 /etc/ssh/sshd_config 文件
sudo vim /etc/ssh/sshd_config
- 然后按 i進(jìn)入編輯模式,在空白位置新增輸入:
RSAAuthentication yes
PubkeyAuthentication yes
此處便已經(jīng)設(shè)置好了使用秘鑰登錄了,但是如果需要禁用密碼登錄可以進(jìn)行如下設(shè)置:
PasswordAuthentication no
這一步最好是在能夠用秘鑰登錄的前提下設(shè)置,不然秘鑰又沒法登錄,又不能用密碼登錄,就麻煩了。
編輯完文本后按 ESC,輸入:wq 保存文件并退出。
- 最后,輸入如下指令重啟 SSH 服務(wù):
sudo service sshd restart
設(shè)置好之后,無(wú)法使用密碼登錄,直接ssh username@xx.xx.xx.xx
,如果沒有配置好公私鑰,會(huì)返回Permission denied (publickey)
2.2 生成密鑰對(duì)
密鑰對(duì)的生成在本地電腦或者服務(wù)器都可以。
- 如果,你想不同服務(wù)器共用一個(gè)密鑰對(duì),那建議在本地電腦生成,之后將公鑰上傳到服務(wù)器并安裝就行。
- 如果,你想不同服務(wù)器使用不同的密鑰對(duì),那無(wú)所謂。
這邊以服務(wù)器端生成密鑰對(duì)舉例,客戶端也一樣,比如windows打開cmd輸入命令就行。
首先登錄到服務(wù)器后,在命令行輸入命令,然后一路回車就行。
ssh-keygen
用來(lái)生成秘鑰,如圖:
第一步是確認(rèn)保存秘鑰的位置,一般使用默認(rèn)的位置即可。
第二步是為秘鑰設(shè)置一個(gè)密碼, 第三步是確認(rèn)密碼。如果輸入的話,即使別人有你的秘鑰沒有你的密碼也是無(wú)法登錄你的服務(wù)器的,這樣會(huì)比較保險(xiǎn)但也比較繁瑣,直接回車表示不設(shè)置密碼。
后面的信息是給出秘鑰、公鑰保存的位置和秘鑰信息。
最終我們可以看到在 /home/username目錄中生成了一個(gè)隱藏目錄 .ssh,里面包含兩個(gè)密鑰文件,id_rsa 為私鑰,id_rsa.pub 為公鑰。
2.3 在服務(wù)器上安裝公鑰
首先進(jìn)入 /home/username/.ssh/
,如果沒有./ssh
,那就創(chuàng)建;如果沒有id_rsa.pub
,那就上傳到該目錄。
然后在命令行輸入以下命令安裝公鑰,其實(shí)就是將id_rsa.pub
的內(nèi)容添加到authorized_keys
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
如此便完成了公鑰的安裝。 此外,為了確保連接成功,輸入如下指令以保證以下文件權(quán)限正確
chmod 600 authorized_keys
chmod 700 ~/.ssh
命令意思:
對(duì)于安裝好的公鑰authorized_keys
, 讓當(dāng)前用戶具有讀寫權(quán)限,其余用戶沒有任何權(quán)限,以防被人修改,當(dāng)前用戶就登錄不了了。
對(duì).ssh
目錄,讓當(dāng)前用戶具有可讀可寫可執(zhí)行權(quán)限,其余用戶沒有任何權(quán)限,確保ssh正常工作。
2.4 客戶端利用私鑰登錄
如果是在服務(wù)器端生成的密鑰對(duì),首先要將.ssh文件夾中的私鑰id_rsa下載到客戶端,比如你的電腦,放在一個(gè)你不會(huì)刪除的文件夾內(nèi),比如新建了一個(gè) ssh 文件夾保存秘鑰,為了便于管理 你也可以修改秘鑰的文件名。
2.4.1 在MobaXterm中使用秘鑰登錄的操作
主要就是4、5步,勾選Use private key
,然后點(diǎn)擊文件圖標(biāo)
選擇剛才下載好的私鑰文件,最后點(diǎn)OK就能成功登錄了
2.4.2 在pycharm專業(yè)版配置ssh遠(yuǎn)程解釋器
設(shè)置——項(xiàng)目——Python解釋器——添加解釋器——SSH
新建——輸入主機(jī)名(IP)、端口、用戶名
勾選密鑰對(duì),然后再然后點(diǎn)擊文件圖標(biāo)
選擇剛才下載好的私鑰文件,(密碼短語(yǔ)空著,保存密碼短語(yǔ)勾不勾無(wú)所謂),再點(diǎn)下一步
密碼字段不用輸入,直接跳過,點(diǎn)下一步
出現(xiàn)如下界面就表示登錄成功了
之后再去選擇服務(wù)器目錄下的python解釋器就好了
2.4.3 ssh、scp命令行使用密鑰登錄
第一次需要用 -i
指定私鑰文件,之后就不用了,很方便的!?。?br> ssh
ssh -i ~/.ssh/id_rsa username@10.123.78.125
ssh的使用方法
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]
scp
scp -i ~/.ssh/id_rsa -r 要傳輸?shù)奈募刂?username@10.123.78.125:目標(biāo)目錄地址
scp的使用方法
usage: scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file]
[-J destination] [-l limit] [-o ssh_option] [-P port]
[-S program] source ... target
3、報(bào)錯(cuò)解決
3.1 Permissions 0644
- 錯(cuò)誤信息:
Permissions 0644 for ‘/home/xxxx/.ssh/my_id_rsa’ are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-642386.html
- 解決辦法:
按照錯(cuò)誤提示,意思是:my_id_rsa
這個(gè)文件太開放了,要求私鑰文件不能被其他人訪問。
所以只要將所屬組和其他人的read權(quán)限取消即可。
0644其實(shí)就是表示my_id_rsa
這個(gè)文件的權(quán)限是644,要變得不那么open,那就把權(quán)限設(shè)成600,
chmod 600 my_id_rsa
參考鏈接
Ubuntu 設(shè)置 SSH 通過密鑰登錄文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-642386.html
到了這里,關(guān)于【linux】linux設(shè)置ssh密鑰登錄詳細(xì)教程,附Mobaxterm和pycharm ssh python解釋器配置教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!