我有一个到 Unix 中服务器的 sftp 连接。没有密码,我使用语法连接和执行命令
sftp -b $user@$server_name
谁能建议我如何编写一个 shell 脚本来使用密码以非交互方式连接远程服务器
尝试使用以下选项,
lftp -u $user,$pass sftp://$host << --EOF--
cd $directory
put $srcfile
quit
--EOF--
您可以使用 ~/.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
最好的方法是在客户端上创建一个密钥对,并将密钥添加到目标用户的~/.ssh/authorized_keys
.
要创建密钥对,请运行ssh-keygen
,当它要求输入密码时,只需按回车键以指示“无密码”。然后在服务器上运行ssh-copy-id $user@$server_name
或手动创建 a并将客户端~/.ssh/authorized_keys
的内容复制~/.ssh/id_rsa.pub
到其中(ssh-copy-id
并非在所有机器上都可用,因此在某些机器上您必须手动完成)。
现在您应该能够运行ssh
或scp
无需密码,因为它应该使用您的密钥。如果不起作用,请确保您的~/.ssh/
目录和内容的权限在两台机器上都是正确的;目录应为0700
( drwx------
),文件应为600
( -rw-------
)。还要检查客户端和服务器上是否启用了密钥身份验证。