如何使用Python3从一台Linux服务器ssh到另一台



我正在尝试从EC2工具Linux服务器到预Linux服务器的SSH。我正试图利用内置的操作系统模块将SSH连接到另一台服务器,但我的代码目前不接受密码输入。。。

这个想法是,您运行python3脚本,然后键入您希望ssh进入的服务器的名称,该脚本将提取AWS机密管理器的服务器凭据,并使用该凭据在另一台服务器上打开ssh会话。

#注意-我不想在另一台服务器上远程运行命令,我只想运行一个python3脚本,从一台linux服务器到另一台linux服务器获取cred和ssh。。

import os
server_name = input("Enter server name: ")
input_value = f"aws secretsmanager get-secret-value --secret-id {server_name} --version-stage AWSCURRENT"

int_output = os.system(input_value)
string_output = os.popen(input_value).read()
json_output = json.loads(string_output)
secret_string = json_output['SecretString']
json_secrets = json.loads(secret_string)
server_ip = json_secrets['server_ip']
server_user = json_secrets['server_user']
server_pw = json_secrets['server_password']
os.system(f"ssh {server_user}@{server_name}")
os.system(f"{sever_pw}")
os.system(f"n")

我遇到的问题是,当我在EC2实例上执行python3脚本时,系统会提示我输入密码。。。这是一个问题,因为密码应该与脚本执行的server_pw变量一起应用。我将输入的密码存储为一个变量,并打印并验证它是否具有正确的密码。

有人知道为什么在这种情况下验证SSH凭据的密码命令失败了吗?

对的即时响应

os.system(f"ssh {server_user}@{server_name}")

是提示输入密码。脚本在提示之前没有到达下一行。如果您退出密码提示,那么您的密码将直接写入。

您可能必须使用另一个SSH客户端,例如sshpass,它接受多个命令行参数,包括密码。

你也可以尝试输入密码,例如

echo $PASSWORD | os.system(f"ssh {server_user}@{server_name}")

相关内容

最新更新