2011-08-23 61 views
0

任何人都知道如何通过密码初始本身ssh/su?如何通过ssh/su - 通过本身传递密码?

像:

ssh [email protected] -p [password] 
pbrun su - unix_owner -p [password] 

我怎样才能做到这一点?
它不应该弹出密码或任何RSA认证就像是/否。

+1

你有没有考虑使用SSH密钥呢?这比在命令行上指定密码更好。 –

+0

你是不是想通过脚本来自动远程进程(即登录,做一些事情,注销),或者是你想自动登录到一个交互式的壳呢?一个比另一个容易。 –

回答

1

我想你可能需要一个sudoers file以类似的方式完成su的东西,而不会被提示输入密码。

我从来没有使用SSH没有密码的提示,却发现this这表明它可以完成...

0

不能做到这一点。你正在调用远程机器上的passwd程序。如果有一种方法可以在不提示旧密码的情况下更改密码,任何人都可以在您的控制台上更改密码。你仍然需要在通过ssh连接

0

至于SSH通过密码,你可以使用RSA密钥,而那些不会提示你输入密码。

至于苏,那就要进行硬编码,或者您需要创建自己的应用程序作为各种各样的包装。

1

传递明文密码未被SSH意。 尝试了解ssh密钥认证(谷歌会帮助你),你不需要再输入你的密码。远程机器

> mkdir -p ~/.ssh #if neccessary 
> touch ~/.ssh/authorized_keys2 
> chmod go-rwx $HOME/.ssh/authorized_keys2 

在本地机器上

确定,更详细的,试试这个

> ssh-keygen # if neccessary 
> cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> .ssh/authorized_keys2 && chmod 0600 ~/.ssh/authorized_keys2" 
0

我不认为你可以在密码直接传递到ssh命令(否则它将被存储在你的历史记录中)。为什么不使用密钥来跳过身份验证提示。

1

一个更好的办法是使用SSH密钥,像其他答案建议,但如果你真的需要它,你可以使用expect了点。 只需创建这样一个expect.file:

#!/usr/bin/env expect 

set username youruser 
set pass yourpassword 
set host yourhost 

spawn ssh ${username}@${host} 

expect -re "password:" 
send "${pass}\r" 

expect -re "$" 

interact 

并执行它:

expect expect.file