每次登錄測試服務器,ssh登錄總是需要輸入密碼。登錄的少還行,登錄的多了,多一行命令都是多余的。
rsa認證登錄方式
制作密鑰對
在客戶端(本地機器)終端下輸入以下命令
ssh-keygen -t [rsa|dsa]
rsa和dsa代表不同的算法
例如:
一直回車就對了(不用設置密碼)
將會生成密鑰文件和私鑰文件 id_rsa,id_rsa.pub(如果用dsa則生成id_dsa,id_dsa.pub)
生成位置在/root/.ssh/文件夾下(我用的是root用戶所以在root下,生成過程會有提示文件位置)
.ssh 是隱藏文件夾 使用 ls -a查看
將公鑰放到服務器指定位置
方法一、直接復制
1、將公鑰復制到服務器的root用戶下的.ssh文件夾(用哪個用戶登錄就復制到哪個用戶下的.ssh文件夾下)
scp /root/.ssh/id_rsa.pub root@172.16.0.164:/root/.ssh/
2、安裝公鑰
登錄到服務器cd /root/.ssh/
cat id_rsa.pub >> authorized_keys
方法二、使用ssh-copy-id命令復制(推薦)
一個命令直接就ok了
ssh-copy-id root@172.16.0.164
驗證
不用輸入密碼則成功,否則失敗
注意事項
上面操作測試過是沒有問題的
linux的版本和使用的用戶不同會有差別的。
如果出現問題可以考慮以下兩點
1、id_rsa.pub和authorized_keys的文件權限問題
chmod 600 authorized_keys
chmod 700 ~/.ssh
2、ssh的配置文件
vim /etc/ssh/sshd_config
#啟用 RSA 認證,默認為yes
RSAAuthentication yes
啟用公鑰認證,默認為yes
PubkeyAuthentication yes
#root用戶ssh登錄
PermitRootLogin yes
(這些配置我都是沒有修改的,我的是redhat7.2)
自定義寫個簡單shell腳本
在常用文件夾下創(chuàng)建個文件
編輯文件
文件內容 ssh root@172.16.0.164
vim 164.sh
#添加內容
ssh root@172.16.0.164
保存退出
:wq
增加用戶的執(zhí)行權限
搞定 結合tab鍵使用更爽喲
expect命令免密登錄方式
可能你覺得需要操作服務器系統(tǒng)不好,當然也可以只在本地操作。
使用expect命令只需要本地操作,前提是你本地有expect這個命令
1、創(chuàng)建一個文件
添加下面內容,將用戶 、ip、密碼修改成你自己的
#!/usr/bin/expect -f
set username root
set hostname 172.16.0.164
set password 123456
spawn ssh $username@$hostname
set timeout 1
expect { "yes/no"
{send "yes\r";exp_continue}
}
expect "$username@$hostname's password:"
send "$password\r"
interact
2、添加expectssh.sh執(zhí)行權限
3、執(zhí)行命令
(1、必須使用 expect 命令執(zhí)行2、你可以再包一層 使用bash解析去執(zhí)行)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。