1. 程式人生 > >sftp在指令碼中如何時使用(不用輸入密碼)

sftp在指令碼中如何時使用(不用輸入密碼)

實現過程:

主要步驟如下:

1.為執行shell指令碼的本地使用者生成金鑰對
2.將其中的公鑰分發到sftp欲登入的遠端伺服器上
3.編寫並以上面的本地使用者執行shell指令碼

一.生成金鑰對

在shell指令碼中使用sftp時必須用到金鑰對(公鑰和私鑰).可使用下列方式生成(SSH 2.X版本),這裡本地使用者記為:local_user:
ssh-keygen -t rsa

螢幕提示:

Generating public/private dsa key pair.

Enter file in which to save the key (/home/local_user/.ssh/id_dsa): 
# 按回車儲存為: /home/local_user/.ssh/id_dsa,即當前使用者local_user的私鑰

Enter passphrase (empty for no passphrase): 
# 按回車,表示讀取金鑰時不需要金鑰的密碼

Enter same passphrase again: 
# 確認金鑰的密碼,必須和上面的輸入相同

Your identification has been saved in /home/local_user/.ssh/id_dsa.
# 私鑰儲存資訊

Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
# 公鑰儲存資訊

The key fingerprint is:
ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
# 金鑰指紋

二.分發公鑰

為了使用金鑰,必須將公鑰分發到欲登入的遠端伺服器上,這裡遠端伺服器記為remote_host,欲登入的遠端使用者記為remote_user

1.copy公鑰到欲登入的遠端伺服器的遠端使用者的家目錄下,例如:

copy id_dsa.pub到remote_host:/home/remote_user/.ssh/

若目錄/home/remote_user/.ssh/不存在,請先建立之.

2.將copy來的公鑰檔案改名為authorized_keys

3.修改公鑰檔案的訪問許可權

chmod 644 authorized_keys

三.示例

目標:把某路徑下的COBOL85.pco拷貝成aaaa

#!/bin/bash
sftp [email protected] << EOF
put /home/ntt12/work/WWW/COBOL85.pco /home/ntt12/work/WWW/aaaa
quit
[EOF]


-------------------------------------------------------------------------------------

sftp 是一個互動式檔案傳輸程式。它類似於 ftp, 但它進行加密傳輸,比FTP有更高的安全性。下邊就簡單介紹一下如何遠端連線主機,進行檔案的上傳和下載,以及一些相關操作。

舉例,如遠端主機的 IP 是 202.206.64.33或者是域名www.hebust.edu.cn,使用者名稱是 fyt ,在命令列模式下:sftp

[email protected]或者 [email protected]。回車提示輸入密碼。進入提示符

sftp>

如果登陸遠端機器不是為了上傳下載檔案,而是要修改遠端主機上的某些檔案。可以

ssh [email protected] (其實sftp就是ssh 的一個程式。)

sftp> get /var/www/fuyatao/index.php /home/fuyatao/
這條語句將從遠端主機的 /var/www/fuyatao/目錄下將 index.php 下載到本地 /home/fuyatao/目錄下。

sftp> put /home/fuyatao/downloads/Linuxgl.pdf /var/www/fuyatao/
這條語句將把本地 /home/fuyatao/downloads/目錄下的 linuxgl.pdf檔案上傳至遠端主機/var/www/fuyatao/ 目錄下。

你如果不知道遠端主機的目錄是什麼樣, pwd命令可以幫您查詢遠端主機的當前路徑。查詢本機當前工作目錄 lpwd.

改變路徑可以用cd ,改變本機路徑可以用 lcd;

ls rm rmdir mkdir 這些命令都可以使用。同理呼叫本機都是加 l , 即 lls lrm.

要離開sftp,用exit 或quit、 bye 均可。詳細情況可以查閱 man sftp.

如果覺得在命令列模式下不太方便,可以 sudo apt-get install gftp。在圖形介面下操作就簡便多了。

相關推薦

sftp指令碼如何使用不用輸入密碼

實現過程: 主要步驟如下: 1.為執行shell指令碼的本地使用者生成金鑰對 2.將其中的公鑰分發到sftp欲登入的遠端伺服器上 3.編寫並以上面的本地使用者執行shell指令碼 一.生成金鑰對 在shell指令碼中使用sftp時必須用到金鑰對(公鑰和私鑰).可使用下列

解決 shell指令碼SCP命令需要輸入密碼的問題

本文轉自:https://blog.csdn.net/u012454773/article/details/72779439 使用金鑰檔案,兩臺機器建立信任 這裡假設主機A(192.168.100.3)用來獲得主機B(192.168.100.4)的檔案。 在主機A上執行如下命令來生成配對金鑰:

共享一個目錄,任何人都可訪問,不用輸入密碼即可訪問,要求只讀

目錄 eve lob host etc server 工作組 ini main 1、服務端配置 [[email protected]/* */ ~]# yum install -y samba samba-client # 安裝 Samba [[e

ubuntu安裝mysql 未提示輸入密碼

我在Ubuntu16.04版本中使用終端安裝MySQL5.7時,按照度孃的教程,搜尋如何安裝,大多是如下程式碼: sudo apt-get install mysql-server sudo apt-get install mysql-client 檢查MySQL是否執行: su

Git -- 解決github提交程式碼不用輸入密碼

解決方案: 方案一: 在你的使用者目錄下新建一個文字檔案.git-credentials Windows:C:/Users/username Mac OS X: /Users/username Linux: /home/

使用SSM 或者 springboot +mybatis,對資料庫的認證資訊使用者名稱,密碼進行加密。

通常情況下,為了提高安全性,我們需要對資料庫的認證資訊進行加密操作,然後在啟動專案的時候,會自動解密來核對資訊是否正確。下面介紹在SSM和springboot專案中分別是怎樣實現的。 無論是使用SSM還是springboot,首先我們需要一個加密工具,這裡我採用的是AES 高階加

解決 Ubuntu 1804 安裝MySQL未提示輸入密碼的問題

Ubuntu 1804 安裝MySQL 5.7 執行命令安裝MySQL sudo apt install mysql-server sudo apt install mysql-client 安裝後看下是否啟動: sudo ps aux | grep mysql 如果

c++求1!+2!+3!+...+20!不用遞迴

c++中求1!+2!+3!+…+20!(不用遞迴) #include "stdafx.h" #include<iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) {

shell指令碼stack簡單封裝

操作命令 init_stack name # 初始化 push_stack name data # 進棧操作 pop_stack name # 出棧操作 print_stack name # 輸出棧中內容 實際程式碼 function i

使scp不用輸入密碼

有些時候,我們在複製/移動檔案 到另一臺機器時會用到scp,因為它比較安全。但如果每次都要輸入密碼,就比較煩了,尤其是在script裡。不過,ssh有另一種用金鑰對來驗證的方式。下面寫出我生成密匙對的過程,供大家參考。第一步:生成密匙對,我用的是rsa的金鑰。使用命令 "s

如何在ssh遠端linux伺服器不需要輸入密碼

目的:   期望A伺服器在對B伺服器執行ssh或者scp等命令的時候不需要輸入密碼 實現方法:   1.通過安裝sshpass服務   2.通過金鑰驗證的方式 操作過程:   一、通過sshpass的方式達到密碼非互動     1.安裝sshpass服務(centeros 7上可直接yum安裝,

sudo 不用輸入密碼

第一種方式 pw.sh  #!/bin/bash  echo 'xxxxx' SUDO_ASKPASS=/var/lib/jenkins/pw.sh sudo -A gbp buildpackage --git-ignore-branch -sa 第二種方式 vim /

使用JSCH連線,需要輸入密碼的解決方法

背景: 在做一個安裝指令碼,期間會執行一些資料庫的操作,需要DBA帳號才可以執行。 我們用的JSCH建立SSH通道,直接連線到目標機器上執行,效果和開啟命令列是一樣的,唯一特殊的,就是關於DBA的密碼的問題。 Oracle(我們的資料庫用的Oracle)的指令碼中是提供了連

Shell指令碼互動之:自動輸入密碼

Shell指令碼互動之:自動輸入密碼 2016年04月09日 19:41:26 zhangjikuan 閱讀數:58208 標籤: Shell互動自動輸入密碼expect重定向管道 更多

Linux 執行Shell 指令碼的方式三種方法

Shell 指令碼的執行方式通常有如下三種: (1)bash script-name 或者 sh script-name;(2)path/script-name或者./script-name;(3)sourcescript-name或者. script-name。下面,分別

Linux執行Shell指令碼的方式三種方法

Shell 指令碼的執行方式通常有如下三種:(1)bash script-name 或者 sh script-name;(2)path/script-name或者./script-name;(3)source script-name或者. script-name。下面,分別介

Web專案對配置檔案密碼進行加密資料庫連線密碼

Web專案的如配置檔案applicationContext.xml檔案中,如資料庫連線的使用者密碼資訊的加密。 我們平時直接寫的專案配置是這樣的: <bean id="dataSource" class="org.apache.commons.dbcp.B

Moodle限制使用者修改自己姓名 暱稱等可以改密碼

在網站管理,許可權中,選擇角色管理,認證使用者(所有可登入使用者),Ctrl + f 搜尋使用者資料,把編輯使用者資料相關許可權設定為禁止。 這樣所有使用者繼承的許可權都可以限制修改 當然如果你的全是臨時使用者反而需要修改成實名的,那麼保留相關許可權就行,後

ubuntu 設定su,sudo不用輸入密碼

設定sudo免密碼 sudo是linux系統管理指令,是允許系統管理員讓普通使用者執行一些或者全部的root命令的一個工具,如halt、reboot、su等等。 登入到root使用者 將使用者加入sudoers visudo //或者vi /et

解決ssl啟動要httpd輸入密碼的問題

解決方案有2種1:去掉/usr/local/bin/apachectl startssl啟動的pass phrase,用空pass phrase啟動apache(while preserving the original file):$ cp server.key server.key.org$ openss