Net*_*oon 107 ssh command-line bash remote-access
我正在使用 Ubuntu 11.10。我ssh每天都用于连接许多服务器,所以我将它们的参数放在.ssh/config文件中,如下所示:
Host Home
User netmoon
Port 22
HostName test.com
Run Code Online (Sandbox Code Playgroud)
有没有办法将每个连接的密码放在这个文件中,这样,当服务器要求输入密码时,终端输入其密码并将其发送到服务器?
我需要这个,因为有时我远离电脑,当我回去时,输入密码并按Enter终端说CONNECTION CLOSED。
PS 我不想使用公钥/私钥对。
wal*_*tor 58
为了方便而牺牲安全性永远不会结束......
你可以ssh-copy-id从openssh-client包中使用吗?
来自man ssh-copy-id:
ssh-copy-id 是一个脚本,它使用 ssh 登录到远程机器并将指定的身份文件附加到该机器的 ~/.ssh/authorized_keys 文件中。
jco*_*ado 27
如果您真的不想使用公钥/私钥对,您可以编写一个expect脚本,根据目标地址自动为您输入密码。
编辑:我的意思是你可以有一个脚本,一方面expect用于为你输入密码,另一方面从配置文件中读取给定用户和主机的密码。例如,以下 python 脚本适用于晴天场景:
#!/usr/bin/python
import argparse
from ConfigParser import ConfigParser
import pexpect
def main(args):
url = args.url
user, host = url.split('@', 1)
cfg_file = 'ssh.cfg'
cfg = ConfigParser()
cfg.read(cfg_file)
passwd = cfg.get(user, host)
child = pexpect.spawn('ssh {0}'.format(url))
child.expect('password:')
child.sendline(passwd)
child.interact()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Run ssh through pexpect')
parser.add_argument('url')
args = parser.parse_args()
main(args)
Run Code Online (Sandbox Code Playgroud)
配置文件格式如下:
[user_1]
host1 = passwd_1
host2 = passwd_2
[user_2]
host1 = passwd_1
host2 = passwd_2
Run Code Online (Sandbox Code Playgroud)
注意:正如所解释的,python 脚本需要更加复杂才能处理来自 ssh 的所有可能的错误和问题消息以及所有可能的 URL(在示例中假设它类似于user@host,但用户部分不是' t 使用了大部分时间),但基本思想仍然是相同的。关于配置文件,您可以使用不同的配置文件或使用.ssh/config并编写自己的代码来解析该文件并获取给定用户和主机的密码。
Eri*_*uff 23
ProxyCommand 怎么样:
Host Home-raw
HostName test.com
Host Home
User netmoon
Port 22
ProxyCommand sshpass -pmypass ssh netmoon@%h-raw nc localhost %p
Run Code Online (Sandbox Code Playgroud)
您也可以使用ssh -W代替nc:
ProxyCommand sshpass -pmypass ssh netmoon@%h-raw -W localhost:%p
Run Code Online (Sandbox Code Playgroud)
小智 20
也有sshpass程序。如何使用:
sshpass -p MyPa55word ssh me@myservor.com
Cae*_*ium 16
不,这恐怕是不可能的。
唯一真正的选择是使用私钥,但您已经说过不想(为什么不呢?)。
小智 8
您可以在 /usr/local/bin 中创建一个简单的 ssh 脚本替换:
#!/bin/bash
host=$1
password=`awk "/#Password/ && inhost { print \\\$2 } /Host/ { inhost=0 } /Host $host/ { inhost=1 }" ~/.ssh/config`
if [[ -z "$password" ]]; then
/usr/bin/ssh $*
else
sshpass -p $password /usr/bin/ssh $*
fi
Run Code Online (Sandbox Code Playgroud)
然后在你的 ~/.ssh/config 文件中你可以使用
Host foohost
User baruser
#Password foobarpassword
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
253627 次 |
| 最近记录: |