您好,登錄后才能下訂單哦!
通過設置ssh怎么無密碼登錄linux服務器?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
rsa認證登錄方式
制作密鑰對
在客戶端(本地機器)終端下輸入以下命令
ssh-keygen -t [rsa|dsa]
rsa和dsa代表不同的算法
例如:
ssh-keygen -t rsa
一直回車就對了(不用設置密碼)
將會生成密鑰文件和私鑰文件 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
驗證
不用輸入密碼則成功,否則失敗
ssh 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腳本
在常用文件夾下創建個文件
touch 164.sh
編輯文件
文件內容 ssh root@172.16.0.164
vim 164.sh #添加內容 ssh root@172.16.0.164 保存退出 :wq
增加用戶的執行權限
chmod u+x 164.sh
搞定 結合tab鍵使用更爽喲
./164.sh
expect命令免密登錄方式
可能你覺得需要操作服務器系統不好,當然也可以只在本地操作。
使用expect命令只需要本地操作,前提是你本地有expect這個命令
1、創建一個文件
touch expectssh.sh
添加下面內容,將用戶 、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執行權限
chmod u+x expectssh.sh
3、執行命令
expect expectssh.sh
看完上述內容,你們掌握通過設置ssh怎么無密碼登錄linux服務器的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。