2

我有一个到 Unix 中服务器的 sftp 连接。没有密码,我使用语法连接和执行命令

sftp -b $user@$server_name

谁能建议我如何编写一个 shell 脚本来使用密码以非交互方式连接远程服务器

4

3 回答 3

3

尝试使用以下选项,

lftp -u $user,$pass sftp://$host << --EOF--
cd $directory
put $srcfile
quit

--EOF--

于 2014-06-25T08:30:16.923 回答
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
于 2013-11-11T14:23:20.453 回答
0

最好的方法是在客户端上创建一个密钥对,并将密钥添加到目标用户的~/.ssh/authorized_keys.

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

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

于 2013-11-11T14:32:08.947 回答