《LINUX實戰:Linux基礎教程:配置SSH免密碼登陸》要點:
本文介紹了LINUX實戰:Linux基礎教程:配置SSH免密碼登陸,希望對您有用。如果有疑問,可以聯系我們。
在應用中我們經常會登陸其他的主機,每次都需要輸入用戶名和暗碼.另外在Hadoop的使用中也會使用ssh命令去連接其它的主機.我們可以設置SSH免暗碼登陸來實現其他主機登錄該主機是不用輸入暗碼.
現在我們有兩臺測試的Linux的虛擬機,我們稱之為主機1和主機2.ip分別為192.168.1.101和192.168.1.102,我們這次的目的是用主機主機1的grid用戶無暗碼連接主機2的grid用戶
1. 在主機1天生密鑰
先解釋一下,三個提醒信息
我們在主機1中創建一個密鑰,由于所有設置都是用的默認的,因此直接三個回車
[grid@linuxidc ~]$ ssh-keygen -t rsa
我們可以查看一下當前用戶主目次下的.ssh文件夾
[grid@linuxidc ~]$ cd ~/.ssh
[grid@linuxidc .ssh]$ pwd
/home/grid/.ssh
[grid@linuxidc .ssh]$ ll
total 12
-rw-------. 1 grid grid 1675 Jul 22 13:38 id_rsa
-rw-r--r--. 1 grid grid 393 Jul 22 13:38 id_rsa.pub
-rw-r--r--. 1 grid grid 402 Jul 22 12:35 known_hosts
可以發現下面有兩個文件:id_rsa
和id_rsa.pub
此中id_rsa.pub是公鑰,id_pub是私鑰
2. 將主機1公鑰分發到主機2下
我們可以直接使用ssh-copy-id 主機名
敕令將公鑰拷貝到對方的主機下,例如:
[grid@linuxidc ~]$ ssh-copy-id tiny02
grid@tiny02's password:
Now try logging into the machine, with "ssh 'tiny02'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
實際上ssh-copy-id 命令便是將當前主機id_rsa.pub中的內容,追加到目標主機上的~/.ssh/authorized_keys
文件上,如果該文件不存在,則創建
3. 登錄到主機2
我們如今就可以登錄主機2了
login as: admin
admin@192.168.132.115's password:
Last login: Tue Mar 7 05:10:19 2017 from 192.168.132.59
[admin@tiny ~]$ ssh 192.168.132.114
Last login: Tue Mar 7 05:13:28 2017 from 192.168.132.115
[admin@tiny ~]$
測試勝利
4.關于SSH連接中流程問題(以下內容純屬于不茍言笑的胡說八道)
前面說到SSH是將公鑰發給其余主機,然后其余主機用公鑰加密,然后發送回來的嗎?所以不應該是將公鑰發送給其他主機上,然后其他主機來連接這臺主機嗎?為什么在這里變為了講公鑰發送給其他主機,然后去連接其它主機,不應該是被連接嗎?其實我也不知道,看了SSH協議交互過程這篇博客,我做出了一下猜測:
當我們沒有設置SSH免暗碼的時候,我們需要輸入暗碼才能進行遠程連接.所以他的連接過程可能是這樣子:
而免密碼登陸的時候連接過程呢?由于此時服務器已經有了客戶端的公鑰,可能是這樣子的
發現其實二者是一樣的只不過就是認證方式不同,一個是password認證,一個是publickey認證,而當服務器將客戶端的公鑰配到authorized_keys就表示已經同意了對方的免密碼連接.需要注意一個問題,password認證所用的密鑰和publickey認證所用的密鑰是不同的.password認證所用的密鑰在/etc/ssh
下,而publickey認證所用的密鑰在~/.ssh
下,因此publickey認證所用的公鑰在傳輸過程中是加密的.
而我們換一種情況考慮,就是假設是公鑰給誰就是允許誰免暗碼連接的情況,會有以下幾個問題:
其實我們只要區分免密碼和SSH加密不同就可以了:
因此雖然可能有許多種免密碼的方式,但是我們只要找出來一種最為平安、高效的就可以了.沒有必要糾結于為什么不怎么怎么做.
必要注意的問題:
1. 關于自己主機登陸自己的主機也需要暗碼?
我們可以測試一下這個問題:
[root@linuxidc ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:49:E9:9D
inet addr:192.168.132.113 Bcast:192.168.132.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe49:e99d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2648 errors:0 dropped:0 overruns:0 frame:0
TX packets:1725 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:250583 (244.7 KiB) TX bytes:187492 (183.0 KiB)
Interrupt:19 Base address:0x2024
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:840 (840.0 b) TX bytes:840 (840.0 b)
[root@linuxidc ~]# ssh 192.168.132.113
The authenticity of host '192.168.132.113 (192.168.132.113)' can't be established.
RSA key fingerprint is 67:91:3a:e4:97:af:9d:01:37:5f:4a:ed:14:dc:04:46.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.132.113' (RSA) to the list of known hosts.
root@192.168.132.113's password:
Last login: Tue Mar 7 12:09:45 2017 from 192.168.132.59
所以在我們設置免暗碼登陸的時候我們也需要對自己的主機進行設置
2. root用戶之間為什么設置卻弗成以
root用戶默認設置是不可以使用ssh免暗碼登陸的,但是可以修改相關配置,使其能夠使用ssh免暗碼登陸,但是在此不做介紹.
下面關于SSH相關的文章您也可能喜歡,不妨參考下:
Ubuntu 下配置 SSH服務全過程及問題辦理
Ubuntu 14.04 下安裝Samba 及SSH 服務端的辦法
集群環境SSH免暗碼登錄設置?
提高Ubuntu的SSH登陸認證速度的方法
長途SSH連接服務與基本排錯?
使用SSH公鑰密鑰自動登岸Linux服務器
開啟SSH服務讓Android手機遠程拜訪 Ubuntu 14.04?
SSH非交互式暗碼授權遠程執行腳本?
SSH通過密鑰登岸
Linux上實現SSH免暗碼登陸遠程服務器?
本文永遠更新鏈接地址:
學習更多LINUX教程,請查看站內專欄,如果有LINUX疑問,可以加QQ交流《LINUX實戰:Linux基礎教程:配置SSH免密碼登陸》。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9772.html