0

让我们假设我想将 ssh 写入 1.2.3.4 的脚本,然后调用 ls。问题是当调用“ssh 1.2.3.4”行时,需要密码,因此,即使我填写了密码,流程也会停止,脚本不会继续。输入密码后如何让脚本继续运行?

谢谢!

4

3 回答 3

0

你想做公钥认证。这里有一些资源可以帮助你前进。

http://magicmonster.com/kb/net/ssh/auto_login.html

http://www.cs.rpi.edu/research/groups/vision/doc/auto/ssh/ssh_public_key_authentication.html

我会发布更多链接,但我没有足够的声誉点。;) 如果您需要更多帮助,只需在“SSH 自动登录”或“SSH 公钥身份验证”上搜索。

于 2012-06-15T18:10:22.713 回答
0

实际上,您正在尝试在本地运行 ls 但您打开了一个 ssh 会话。所以在会话打开之前它不会运行 ls 。如果你想远程运行 ls,你应该使用

ssh username@host COMMAND

其中 command 是您要运行的命令。调用命令后,SSH 会话将立即结束,您可以正常捕获其输出。

我建议您对需要 ssh 的脚本使用 RSA 身份验证方法。

我刚试过这个脚本:

#!/bin/sh
ssh vps1 ls
mkdir temp
cd temp
echo test > file.txt

它有效。我可以连接到我的服务器并列出我的家。然后,它在本地创建临时目录,将 cd 放入其中,然后在其中创建带有“测试”的 file.txt。

于 2012-06-15T14:04:40.803 回答
0

编写名为 login_to 的简单登录 bash 脚本并授予 exec 权限(chmod 744 login_to)

#!/bin/bash

if [ $1 = 'srv1' ]; then
  echo 'srv1-pass' | pbcopy
  ssh root@11.11.11.11
fi

if [ $1 = 'foo' ]; then
  echo 'barbaz' | pbcopy
  ssh -t dux@22.22.22.22 'cd ~/somedir/someotherdir; bash'
fi

现在像这样使用它

login_to srv1

login_to foo

当要求输入密码时,只需点击(ctrl+v 或 command+v)即可登录。

于 2014-01-20T18:52:25.133 回答