如何使得執行scp命令時不需要輸入使用者密碼
本人的第一直覺就是建立無密碼使用者,在scp命令中使用該使用者就不需要輸入使用者密碼了。
以下為了討論方便,我們將執行scp命令的機器稱為Client,scp命令操作的遠端機器稱為Server。
首先,我通過以下命令將機器Server上root的密碼刪除,即使root變為無密碼使用者。
[[email protected] root]# passwd -d root
Removing password for user root.
passwd: Success
[[email protected] root]#
為了確認root已經變為無密碼使用者,登入試試。
Red Hat Linux release 8.0 (Psyche)
Kernel 2.4.18-14 on an i686
Server login: root
Last login: Fri Sep 14 16:40:08 on tty1
[
確實root登入時已經不需要密碼了。
然後,我們從機器Client複製一個檔案到機器Server。
[[email protected] root]# scp -p text [email protected]:/root
[email protected]'s password: <-- 直接輸入回車
Permission denied, please try again. <-- 被拒絕
text 100% |**************************| 19 00:00
[[email protected] root]#
從測試結果可知,即使root變為無密碼使用者,scp命令在執行時也會提示輸入密碼。更奇怪的是在提示輸入密碼時,直接輸入回車被拒絕了。但輸入其它任意字元後輸入回車確認就通過認證了。
後來在Internet中查詢相關資料,有資料[1]介紹在兩臺機器的兩個使用者之間建立安全的信任關係後,可實現執行scp命令時不需要輸入使用者密碼。我根據該資料介紹的方法測試成功了。
以下是在機器Client的root和機器Server的root之間建立安全信任關係的步驟:
1. 在機器Client上root使用者執行ssh-keygen命令,生成建立安全信任關係的證書。
[
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <-- 直接輸入回車
Enter same passphrase again: <-- 直接輸入回車
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1c [email protected]
[[email protected] root]#
注意:在程式提示輸入passphrase時直接輸入回車,表示無證書密碼。
上述命令將生成私鑰證書id_rsa和公鑰證書id_rsa.pub,存放在使用者家目錄的.ssh子目錄中。
2. 將公鑰證書id_rsa.pub複製到機器Server的root家目錄的.ssh子目錄中,同時將檔名更換為authorized_keys。
[[email protected] root]# scp -p .ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
[email protected]'s password: <-- 輸入機器Server的root使用者密碼
id_rsa.pub 100% |**************************| 218 00:00
[[email protected] root]#
在執行上述命令時,兩臺機器的root使用者之間還未建立安全信任關係,所以還需要輸入機器Server的root使用者密碼。
經過以上2步,就在機器Client的root和機器Server的root之間建立安全信任關係。下面我們看看效果:
[[email protected] root]# scp -p text [email protected]:/root
text 100% |**************************| 19 00:00
[[email protected] root]#
成功了!真的不再需要輸入密碼了。
參考文獻:
[1] "scp和rsync的實際應用(轉)", http://www.lslnet.com/linux/dosc1/30/linux-238181.htm.
相關推薦
如何使得執行scp命令時不需要輸入使用者密碼
最近在編寫定時自動執行的shell腳步中遇到一個問題。在該腳步中,需要使用scp命令將本地的檔案複製到另一臺機器中備份。但通常執行scp命令後都需要輸入使用者密碼,這樣在定時自動執行的shell腳步中就不適用了。 本人的第一直覺就是建立無密碼使用者,在scp命令
為什麼執行ping命令時不需要root許可權? 怎樣讓程序具有root許可權?
最近遇到一個問題, 需要讓普通使用者執行程式時具有root許可權, 怎麼辦呢? 我們來看看ping, 它採用了raw socket, 需要root許可權, 但是, 我們平常執行root命令的時候, 沒有加sudo啊, 來探個究竟:ubuntu@VM-0-15
如何在ssh遠端linux伺服器時不需要輸入密碼
目的: 期望A伺服器在對B伺服器執行ssh或者scp等命令的時候不需要輸入密碼 實現方法: 1.通過安裝sshpass服務 2.通過金鑰驗證的方式 操作過程: 一、通過sshpass的方式達到密碼非互動 1.安裝sshpass服務(centeros 7上可直接yum安裝,
GIT PUSH/PULL時總需要輸入使用者名稱密碼的解決方案
在提交專案程式碼或者拉程式碼的時候,git會讓你輸入使用者名稱密碼,解決方案:(我們公司用的是gitlab) 執行git config --global credential.helper store命令 然後git push origin your-branc
Python + Appium 【已解決】driver(session)在多個class之間復用,執行完一個類的用例,再次執行下個類的用例時不需要初始化
nic bject config com appium client lee session ted py文件的名稱為:appium_config.py 中的寫法如下 # coding=UTF-8 ‘‘‘ Created on 2017.1.13 @author: Lu
JDK刪除後執行java命令時找不到amd64\jvm.cfg檔案
1、刪除了jdk1.7。 2、刪除了環境變數。JAVA_HOME,ClassPath,path下與jdk相關的變數。 依然報錯如下: 原因是JDK自動安裝的時候除了登錄檔註冊外,還把下圖所示三個檔案複製到windows\system32下面了。而windows的path變數存在,通
用rsync 命令實現linux 跨伺服器差分備份,不需要輸入密碼
測試:本地機器:10.100.2.51 遠端機器:10.100.2.50 目的: 測試環境: 把本地伺服器的test2資料夾的東西移動到遠端伺服器的test2裡面 實現方法: 1, [本地機器] 用ssh-keygen生成金鑰 [[email protected] ~]# ssh-
cmd執行Java命令時編譯通過,但是找不到主類或無法載入主類
剛剛開始學習Java時,發現一個重大問題,CMD執行javac命令能編譯,但是隻要執行java命令就顯示無法載入主類,但是eclipse正常執行,困擾了我很久,後來發現問題所在,是一個很奇葩的問題,給大家分享一下: 就是在用java命令時不要加.class字尾名!!!
為什麼執行make命令時, clean後面的命令不會執行?
來看個簡單的makefile: test1: test1.cpp clean: @echo $(CXX) 執行make命令後, clean後的命令為什麼不執行呢? 它本來是要執行的, 但clean作為目標, 沒有找到對應
執行sudo命令時command not found的解決辦法
解決 這就是 t權限 子進程 lock 包括 defaults 什麽 調用 問題的原因: 在編譯sudo包的時候默認開啟了- -with-secure-path選項。 方法1: sudo vim /etc/sudoers,並在文件內增加這麽一行:Defaults secu
為什麽mysql設置了密碼之後,本地還可以直接訪問,不需要輸入密碼就可以登錄數據庫了?
leg 訪問 cheng 重載 賬號登陸 為什麽 除了 msyql 用戶 轉自 http://blog.csdn.net/buyaoxx/article/details/77619619 今天開發中在Centos7中安裝MySQL5.6版本後,在表中新建了一個weich
執行git命令時出現fatal: 'origin' does not appear to be a git repository錯誤
遠程 from pos pull reader could not span style fat 在執行git pull origin master時出現: fatal: ‘origin‘ does not appear to be a git repository
執行sudo命令時的提示語,如何修改?
defaults default 屏蔽 always web char pos something ref 如圖所示,執行sudo命令,提示語(有中文和英文兩個版本): 上面的提示內容是sudo軟件原生的內容。 使用下面的方法,有的時候是可行的。sudo -p ‘提示語‘
python執行scp命令拷貝檔案及資料夾到遠端主機的目錄
系統環境centos7 python2.7 先在作業系統安裝expect [[email protected] python]# vi 3s.py #!/usr/bin/python #coding:utf-8 import sys,re import os import
解決每次git push時需要輸入使用者名稱密碼的問題
開啟git bash控制終端後: 輸入 cd ~ 輸入 vi .gitconfig 在檔案中加上如下完整程式碼: [credential] helper = store -–f
解決在已配置SSH祕鑰的情況下push程式碼到遠端倉庫時仍需要輸入使用者名稱和密碼的問題
本文由荒原之夢原創,原文連結:http://zhaokaifeng.com/?p=1080 出現該問題的原因就是本地倉庫與遠端倉庫進行連線使用的是HTTPS而不是SSH,因此,即使部署了SSH公鑰仍然需要在push程式碼的時候輸入使用者名稱和密碼. 解決辦法: 輸入命令:
composer update 時需要輸入賬號密碼
Loading composer repositories with package information Updating dependencies (including require-dev) Authentication required (packagi
tomcat配置訪問專案時不需要新增專案名稱
引言 我們如果直接講web專案部署在伺服器的tomcat上面,在訪問的時候需要新增專案名稱,那麼我們如果怎樣去掉這個專案名稱呢?下面提供兩種方式 第一種方式: 在<Host name=“localhost” appBase=“webapps” 節點下面新
在CentOS7執行安裝命令時,比如yum update等報錯
在CentOS7執行安裝命令時,比如yum update等,會出現下面的報錯。 Loaded plugins: fastestmirror Error: invalid clean argument: 'yum' Mini usage:
tomcat配置訪問專案時不需要加專案名稱
java web部署後,訪問專案的時候,需要在地址中新增專案名稱,那麼如何去掉專案名稱直接訪問專案呢? 目前有兩種方式: 方式1:修改conf目錄下的server.xml配置 <Host appBase="webapps" autoDeploy="true" na