如何通过最初自己传递密码来ssh/su?

如何通过最初自己传递密码来ssh/su?,ssh,Ssh,有人知道如何通过最初自己传递密码来ssh/su吗 比如: 我如何才能做到这一点? 它不应该弹出密码或任何RSA身份验证,例如yes/no。我认为您可能需要一个类似于su的方式来完成工作,而不需要提示输入密码 我从来没有在没有密码提示的情况下使用过ssh,但我发现这表明它是可以完成的…我认为您可能需要一个类似于su的方式来完成工作,而不需要提示输入密码 我从来没有在没有密码提示的情况下使用过ssh,但我发现这表明它可以完成…无法完成。您正在远程计算机上调用passwd程序。如果它能够在不提示输入旧

有人知道如何通过最初自己传递密码来ssh/su吗

比如:

我如何才能做到这一点?

它不应该弹出密码或任何RSA身份验证,例如yes/no。

我认为您可能需要一个类似于
su
的方式来完成工作,而不需要提示输入密码


我从来没有在没有密码提示的情况下使用过ssh,但我发现这表明它是可以完成的…

我认为您可能需要一个类似于
su
的方式来完成工作,而不需要提示输入密码


我从来没有在没有密码提示的情况下使用过ssh,但我发现这表明它可以完成…

无法完成。您正在远程计算机上调用passwd程序。如果它能够在不提示输入旧密码的情况下更改密码,那么任何人都可以在进入您的控制台后更改您的密码。您仍然需要通过ssh链接传入密码

无法这样做。您正在远程计算机上调用passwd程序。如果它能够在不提示输入旧密码的情况下更改密码,那么任何人都可以在进入您的控制台后更改您的密码。您仍然需要通过ssh链接传递密码

对于ssh,您可以使用RSA密钥,而这些密钥不会提示您输入密码


至于SU,它必须是硬编码的,或者您必须创建自己的应用程序作为某种包装。

至于SSH,您可以使用RSA密钥,这些密钥不会提示您输入密码


至于SU,它必须是硬编码的,或者您必须创建自己的应用程序作为某种包装。

ssh不打算以明文形式传递密码。 尝试了解ssh密钥身份验证(google会有所帮助),您将不再需要键入密码

好的,更详细地说,试试这个:

在远程机器上

> 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 root@remotehost "cat >> .ssh/authorized_keys2 && chmod 0600 ~/.ssh/authorized_keys2"

ssh不希望以明文形式传递密码。 尝试了解ssh密钥身份验证(google会有所帮助),您将不再需要键入密码

好的,更详细地说,试试这个:

在远程机器上

> 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 root@remotehost "cat >> .ssh/authorized_keys2 && chmod 0600 ~/.ssh/authorized_keys2"

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

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

更好的方法是使用ssh密钥,就像其他答案建议的那样,但是如果您确实需要它,您可以使用它。 只需创建一个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

更好的方法是使用ssh密钥,就像其他答案建议的那样,但如果您确实需要它,您可以使用它。 只需创建一个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

您考虑过使用ssh密钥吗?这比在命令行上指定密码更好。您是在尝试通过脚本(即登录、做某事、注销)自动执行远程过程,还是在尝试自动登录到交互式shell?一个比另一个简单。您考虑过使用ssh密钥吗?这比在命令行上指定密码更好。您是在尝试通过脚本(即登录、做某事、注销)自动执行远程过程,还是在尝试自动登录到交互式shell?一个比另一个容易。