a為本地主機(即用於控制其他主機的機器) ;
b為遠端主機(即被控制的機器server), 假如ip為172.24.253.2 ;
在a上的命令:
ssh-keygen -t rsa
(連續三次回車,即在本地生成了公鑰和私鑰,不設定密碼,生成的公鑰私鑰在~/.ssh目錄下,id_rsa是私鑰, id_rsa.pub是公鑰 )
ssh [email protected]mkdir .ssh
chmod
700 .ssh
(需要輸入密碼, 注:必須將.ssh的許可權設為700)
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh
然後在伺服器上建立authorized_keys檔案:
touch ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys
(注意: 必須將~/.ssh/authorized_keys的許可權改為600, 該檔案用於儲存ssh客戶端生成的公鑰,可以修改伺服器的ssh服務端配置檔案/etc/ssh/sshd_config來換檔名,預設是叫authorized_keys)
cat id_rsa.pub >> authorized_keys
# (將id_rsa.pub的內容追加到 authorized_keys 中, 注意不要用 > ,否則會清空原有的內容,使其他人無法使用原有的金鑰登入)
回到a機器:
# ssh [email protected] (不需要密碼, 登入成功)
從表面上簡單的理解一下登入的過程,
首先 ssh-keygen -t rsa 命令生成了乙個金鑰和乙個公鑰, 而且金鑰可以設定自己的密碼
可以把金鑰理解成一把鑰匙, 公鑰理解成這把鑰匙對應的鎖頭,
把鎖頭(公鑰)放到想要控制的server上, 鎖住server, 只有擁有鑰匙(金鑰)的人, 才能開啟鎖頭, 進入server並控制
而對於擁有這把鑰匙的人, 必需得知道鑰匙本身的密碼,才能使用這把鑰匙 (除非這把鑰匙沒設定密碼), 這樣就可以防止鑰匙被了配了(私鑰被人複製)
更簡潔的方式:
步驟1、如果伺服器上沒有authorized_keys檔案,則:(如果有則跳過這一步)
ssh [email protected]mkdir .ssh
chmod
700 .ssh
touch ~/.ssh/authorized_keys
chmod
600 ~/.ssh/authorized_keys
步驟2、在本機:
ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-keygen -t rsa之後三下回車,表示無密碼。即可。(注: ssh-copy-id 自動把金鑰追加到遠端主機的 .ssh/authorized_key 上)
解決php呼叫shell sudo輸入免密碼的問題
問題背景 想在oj上加乙個重啟判題服務的按鈕呼叫shell而已 1.使用su root進入root賬戶 修改 etc sudoers許可權 777 sudo all all all all改為 sudo all all all nopasswd all 表示組 即sudo組的都可以免密碼使用sudo...
vscode遠端開發免密輸入設定
其中,t rsa表示生成金鑰型別為rsa,b表示生成多少位的金鑰,如果不設定的話,預設生成的rsa金鑰長度為2048。金鑰生成路徑預設是c users ssh 其中私鑰檔案為id rsa,公鑰檔案為id rsa.pub。一般預設回車即可。id rsa.pub上傳到伺服器的 ssh 目錄。如果 ssh...
centos ssh免密登入 多台互相免密登入
假定操作的機器為crawl01,需要免密登入的機器為crawl02,crawl03.在crawl01上做如下操作 假定使用者crawl登入的crawl01,其它機器的登陸使用者也是crawl 1.生成金鑰 1 進入到 home crawl ssh目錄下 沒有.ssh則新建 2 輸入ssh keyge...