如何在shell脚本中将密码传递给sftp连接

时间:2013-11-11 14:18:10

标签: bash unix

我在Unix中与服务器建立了sftp连接。 没有密码,我使用语法连接并执行命令

sftp -b $ user @ $ server_name

任何人都可以建议我如何编写shell脚本以使用密码非交互式连接远程服务器

3 个答案:

答案 0 :(得分:3)

尝试使用以下选项,

lftp -u $ user,$ pass sftp:// $ host<< --EOF -

cd $ directory

把$ srcfile

退出

- EOF -

答案 1 :(得分:1)

您可以使用〜/ .ssh / config文件。

#
# ~/.ssh/config
#

Host servername
Hostname 127.127.127.127
Port 22
User root

#EOF: config

然后只需连接“ssh servername”即可,如果您不想使用密码,可以使用SSH密钥。这是关于如何做到这一点的好教程> http://www.cyberciti.biz/tips/linux-multiple-ssh-key-based-authentication.html

如果您只想从终端传递用户/服务器,则可以执行此操作。

#!/bin/bash
sftp -b "$1"@"$2"

然后像'./sftp.sh用户服务器'

那样使用它

像这样使用SCP;

scp -P 22 user@server:/dir/file.tgz ~/Desktop/

像这样使用SFTP;

sftp user@server:/dir/file.tgz ~/Desktop/file.tgz

你也可以试试这个;

sftp user@host <<EOF
get /dir/file.tgz
rm /dir/file.tgz
EOF

答案 2 :(得分:0)

执行此操作的最佳方法是在客户端上创建密钥对,并将密钥添加到目标用户的~/.ssh/authorized_keys

要创建密钥对,请运行ssh-keygen,当它要求输入密码时,只需按回车键即可显示“无密码”。然后运行ssh-copy-id $user@$server_name或在服务器上手动创建~/.ssh/authorized_keys并将~/.ssh/id_rsa.pub的内容从客户端复制到其中(ssh-copy-id并非在所有计算机上都可用,所以有些人你必须手动完成。

现在您应该可以在没有密码的情况下运行sshscp,因为它应该使用您的密钥。如果它不起作用,请确保两台计算机上~/.ssh/目录和内容的权限都正确;目录应为0700drwx------),文件应为600-rw-------)。还要检查客户端和服务器上是否启用了密钥身份验证。