使ssh不用輸入密碼(指令碼執行scp)
有些時候,我們在複製/移動檔案到另一臺機器時會用到scp,因為它比較安全。但如果每次都要輸入密碼,就比較煩了,尤其是在script裡。不過,ssh有另一種用金鑰對來驗證的方式。下面寫出我生成密匙對的過程,供大家參考。
第一步:生成密匙對,我用的是rsa的金鑰。使用命令 "ssh-keygen -t rsa"
程式碼:
[user1@rh user1]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):
Created directory '/home/user1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7 user1@rh.test.com
[user1@rh user1]$
生成的過程中提示輸入金鑰對儲存位置,直接回車,接受預設值就行了。接著會提示輸入一
個不同於你的password的密碼,直接回車,讓它空著。當然,也可以輸入一個。(我比較懶
,不想每次都要輸入密碼。) 這樣,金鑰對就生成完了。
其中公共金鑰儲存在 ~/.ssh/id_rsa.pub
私有金鑰儲存在 ~/.ssh/id_rsa
然後改一下 .ssh 目錄的許可權,使用命令 "chmod 755 ~/.ssh"
程式碼:
[user1@rh user1]$ chmod 755 ~/.ssh
[user1@rh user1]$
之後把這個金鑰對中的公共金鑰複製到你要訪問的機器上去,並儲存為
~/.ssh/authorized_keys.
程式碼:
[user1@rh user1]$ scp ~/.ssh/id_rsa.pub rh1:/home/user1/.ssh/authorized_keys
user1@rh1's password:
id_rsa.pub 100% 228 3.2MB/s 00:00
[user1@rh user1]$
之這樣就大功告成了。之後你再用ssh scp sftp 之類的訪問那臺機器時,就不用輸入密碼
了,用在script上更是方便。
##############################################深入一點點:
從表面上簡單的理解一下登入的過程,首先 ssh-keygen -t rsa 命令生成了一個金鑰和一個公鑰, 而且金鑰可以設定自己的密碼,可以把金鑰理解成一把鑰匙, 公鑰理解成這把鑰匙對應的鎖頭,把鎖頭(公鑰)放到想要控制的server上, 鎖住server, 只有擁有鑰匙(金鑰)的人, 才能開啟鎖頭, 進入server並控制,而對於擁有這把鑰匙的人, 必需得知道鑰匙本身的密碼,才能使用這把鑰匙 (除非這把鑰匙沒設定密碼), 這樣就可以防止鑰匙被人配了(私鑰被人複製)
當然, 這種例子只是方便理解罷了,擁有root密碼的人當然是不會被鎖住的, 而且不一定只有一把鎖(公鑰), 但如果任何一把鎖, 被人用其對應的鑰匙(私鑰)開啟了, server就可以被那個人控制了所以說, 只要你曾經知道server的root密碼, 並將有root身份的公鑰放到上面, 就可以用這個公鑰對應的私鑰"開啟" server, 再以root的身分登入, 即使現在root密碼已經更改!
如果想控制n個機器, 那就需要n對鑰匙(金鑰和公鑰), ssh-keygen 命令可以隨意更改鑰匙對的名字, 比如:
[root@wwy .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.102.12
......
這樣私鑰和公鑰的名字分別就是:
id_rsa_192.168.102.12 和 id_rsa_192.168.102.12.pub然後將 id_rsa_192.168.102.12.pub 檔案的內容, 追加到sever的 ~/.ssh/authorized_keys2 檔案中,
最後, 在本地用ssh命令的 -i 引數指定本地金鑰, 並登入:
# ssh -i /root/.ssh/id_rsa_192.168.102.12 192.168.102.12
如果金鑰設定了密碼, 就用金鑰的密碼登入, 沒設密碼, 就直接登入進去了
scp也是一樣的如:
scp -i /root/.ssh/id_rsa./xxx 192.168.102.158:/home/wwy/bak
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-983189/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使ssh不用輸入密碼(轉)密碼
- 使ssh不用輸入密碼--摘密碼
- 如何scp不用密碼密碼
- 不同使用者設定ssh信任關係不輸入密碼執行scp 命令密碼
- SSH 無密碼遠端執行指令碼密碼指令碼
- ssh自動輸入密碼指令碼 切換目錄指令碼密碼指令碼
- scp 手動輸入密碼後後臺執行的方法密碼
- scp不輸入密碼進行檔案傳輸密碼
- scp後臺靜默執行(使用expect自動輸入密碼)密碼
- linux 指令碼切換使用者不用輸入密碼Linux指令碼密碼
- ssh訪問不用密碼密碼
- centos配置ssh免密碼登入後,仍提示輸入密碼CentOS密碼
- 在 Linux 命令列指令碼中執行 sudo 時自動輸入密碼Linux命令列指令碼密碼
- Linux 下用 SCP 無需輸入密碼傳輸檔案Linux密碼
- [Linux] SSH配置了免密碼登入,登入時還要輸入密碼Linux密碼
- linux環境下ssh不輸入密碼Linux密碼
- 按照標準建立SSH互信後,ssh仍需要輸入密碼密碼
- ssh執行遠端指令碼遇到的坑指令碼
- Linux ssh 不需要輸入密碼的方法Linux密碼
- Ssh 信任關係建立後仍需要輸入密碼密碼
- SSH免密碼登入密碼
- Windows如何實現登陸系統不用輸入密碼Windows密碼
- ssh免認證配置後還是提示輸入密碼密碼
- 如何在 Linux 中不輸入密碼執行 sudo 命令Linux密碼
- python fabric 免密碼輸入執行任務 踩得坑Python密碼
- input 密碼輸入框如何定位,並且輸入密碼呢?密碼
- SSH免密登入與SCP遠端複製
- Flutter 密碼輸入框 驗證碼輸入框Flutter密碼
- ssh-copy-id登陸無需重複輸入密碼密碼
- win10帳號不用密碼登入的方法_win10怎麼設定不用輸密碼登陸系統Win10密碼
- Win8.1直接進系統不用輸密碼登入的方法密碼
- Shell批量複製或執行檔案(自動輸入密碼)密碼
- linux A機器ssh登入B機器無需輸入密碼Linux密碼
- Linux SSH無密碼登入Linux密碼
- Mac 下 SSH 免密碼登入Mac密碼
- ssh公鑰免密碼登入密碼
- SSH認證免密碼登入密碼
- linux下SCP無密碼傳輸(建立互信關係)Linux密碼