我在Unix中与服务器建立了sftp连接。 没有密码,我使用语法连接并执行命令
sftp -b $ user @ $ server_name
任何人都可以建议我如何编写shell脚本以使用密码非交互式连接远程服务器
答案 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
并非在所有计算机上都可用,所以有些人你必须手动完成。
现在您应该可以在没有密码的情况下运行ssh
或scp
,因为它应该使用您的密钥。如果它不起作用,请确保两台计算机上~/.ssh/
目录和内容的权限都正确;目录应为0700
(drwx------
),文件应为600
(-rw-------
)。还要检查客户端和服务器上是否启用了密钥身份验证。