这是连接到服务器的python脚本。但是当我运行脚本时,它要求我输入ssh密码。如何避免询问ssh密码短语密钥?在
host = '192.168.43.3'
user = 'root'
passwd = 'ppawd'
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user, password=passwd)
transport = ssh.get_transport()
channel = transport.open_session()
channel.setblocking(1)
channel.settimeout(30)
command = "ls -a"
ssh.exec_command(command)
我的建议是生成一个没有密码短语的密钥-在创建密钥时,如果要求输入密码,只需按enter键。在
此密钥应专门用于脚本-避免重复使用用于其他目的的密钥(如用户的交互式登录),因为这会使密钥吊销和访问控制更加困难。在
与在脚本中硬编码密码相比,无密码短语密钥有一些优点:
一些安全注意事项:
请记住,任何有权访问该密钥的人都可以访问远程系统。如果可能的话,您可以考虑对密钥文件设置限制性权限,并为脚本在远程系统中登录创建一个单独的用户。在
如果您的脚本是单一用途的,您还可以考虑限制远程系统上用户可用的shell命令列表
如果您在存储密钥的系统上没有物理安全性(例如:位于不受信任位置的笔记本电脑或台式机),您可能还需要使用完整磁盘加密、块设备加密(LUKS)或文件级加密(encfs)。在
我把问题解决了
记入http://sshmenu.sourceforge.net/articles/key-setup.html
您可以将指纹添加到每个服务器的已知主机上。对于单个用户:
将您的连接主机ip添加到已知的主机,则它不会询问任何问题,例如 是否确实要继续连接(是/否)? 或者如果你想禁用密码询问,那么检查这个链接 http://www.linuxproblem.org/art_9.htmlhttps://www.debian.org/devel/passwordlessssh
相关问题 更多 >
编程相关推荐