linux配置ssh公鑰認證簡介
Linux操作系統誕生於1991 年10 月5 日(這是第一次正式向外公佈時間)。Linux存在着許多不同的Linux版本,但它們都使用了Linux內核。下面是關於linux配置ssh公鑰認證簡介,希望大家認真閲讀!
一、生成和導入KEY
A主機上生成key
$ ssh-keygen -t rsa
$ ls
id_rsa id_
將key導入到遠程的B主機上,並修改權限
A主機上操作
$ cat /root/_ | ssh root@遠程服務器ip 'cat - >> ~/_keys'
B主機上操作
$ chmod 600 ~/_keys
不過還有更簡單的方法,不需要在B主機上再修改權限 ,而直接將公鑰內容導入到遠程主機上,使用ssh-copy-id命令,如下:
$ ssh-copy-id -i /root/_rsa root@xxx,xxx,xxx,xxx
二、配置sshd_config
配置完key後,需要在sshd_config文件中開啟key認證
$ vim /etc/ssh/sshd_config
PubkeyAuthentication yes //將該項改為yes
修改完成後,通過/etc/init.d/sshd restart 重啟ssh服務重新加載配置。如果想要禁用密碼認證,更改如下項:
$ vim /etc/ssh/sshd_config
UsePAM yes
為
UserPAM no
更多配置參數及其意義,可以通過man sshd_config 查看。
三、ssh_config及多私鑰配置
sshd_config是一個全局服務端的配置文件(即本機開啟sshd服務的相關配置),而ssh_config則是一個全局客户端的配置文件。例如,ssh_config中其中兩行就定義了每個用户下默認私鑰key的路徑:
# IdentityFile ~/_rsa
# IdentityFile ~/_dsa
如果出現多台server 多個私鑰文件,在client主機上怎麼配置呢?全部追加到 ~/_rsa(或id_dsa)中?經測試,這是行不通的,只有第一個私鑰可以用,後面的都不行。
在多台server時,可以有兩種解決方案。
1、在不同的主機上,使用相同的公鑰,則這些機器的私鑰也相同。客户端上只需要配置這一個私鑰就可以登錄所有的主機。
2、不同的`主機上使用不同的公鑰時, 這時會有多個不同的私鑰。這就需要為不同的主機指定不同的私鑰文件,這個配置可以在ssh_config中配置(具體可以參看該文件的配置樣例)。當然更多情況下,我們只會在要使用的用户做個情化的配置,配置文件為~/(該文件不存在時,請創建之),格式如下:
Host xxxx
IdentityFile 私鑰文件名
Port 端口號
User 你登陸xxxx服務器用的賬號
注:這裏的配置文件同樣可以參看ssh_config裏的配置,也可以通過man ssh_config獲取更多有用信息。
Host *
User www
Port 22
CheckHostIP no
Compression yes
ForwardAgent yes
Host 10.1.100.*
User dev
Port 22
IdentityFile ~/
如上面的配置,默認我們連接所有的主機(除後面給出的10.1.100.*之外的所有主機)時,默認使用户名為www ,即 ssh = ssh -p 22 。當我們連接10.1.100.* 下的所有主機時,默認會使用dev用户,默認的私鑰會用 ~/ 文件。同理,可以增加更多配置。