sftp在脚本中如何时使用(不用输入密码)

转载 2013年12月05日 15:13:39

实现过程:

主要步骤如下:

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 ntt12@172.23.16.55 << 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 fyt@202.206.64.33或者 fyt@www.hebust.edu.cn。回车提示输入密码。进入提示符

sftp>

如果登陆远程机器不是为了上传下载文件,而是要修改远程主机上的某些文件。可以

ssh fyt@202.206.64.33 (其实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。在图形界面下操作就简便多了。

Linux-SFTP/SSH免密码登录

概述Public Key认证的主要魅力在于认证时承诺不必提供密码就能够同远程系统建立连接。Public Key认证的基础在于一对密钥,public key和private key,public key...

总结三种Shell脚本编程中避免SFTP输入密码的方法

最近编程中用到sftp上传文件,且需要用crontab预设定时上传事件。而sftp不同于ftp,没有提供选项如 -i 可以将密码直接编码进程序。使用sftp指令,会自动请求用户输入密码。 总结一...

在shell脚本中调用sftp免密码的配置

需要编写一个定时任务脚本向ECS上传输文件,使用sftp命令时会有交互输入密码,可以通过下列步骤配置,执行脚本时不用输入密码: 前提: 本地机器:local代号A 远程机器:阿里云ECS代号B ...
  • leiswpu
  • leiswpu
  • 2015年12月30日 11:47
  • 3573

sftp免密登录

public class LogInSftpByPubKey {  private static final Logger logger=LoggerFactory.getLogger(AuthSf...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

ssh/sftp无需密码登录配置

 1、首先确保客户端和服务端都已安装SSH 2.X及以上的版本; 2、在客户端用以下命令创建密钥对(遇到输入提示时,一路敲回车即可) $ssh-keygen -d 此时系统自动创建.ssh...

sftp常用命令介绍

某linux系统中有test.txt文件, 现在我yao
  • stpeace
  • stpeace
  • 2014年09月19日 23:07
  • 116784

使用sshpass进行ssh/scp/sftp/自动输入密码

1,ssh ssh 端口为默认22的时候: #sshpass -p userpassword ssh  -o StrictHostKeyChecking=no  username@se...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

ssh自动输入密码登录服务器/ssh免输入密码登录/非交互ssh 密码验证

From: http://www.linuxidc.com/Linux/2011-02/31921.htm 由于经常需要登录一些远程的服务器,每次都需要将密码重输一遍,如下: #ssh 用户名@我的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sftp在脚本中如何时使用(不用输入密码)
举报原因:
原因补充:

(最多只允许输入30个字)