我必须为通过SSH上传文件的部署脚本编写测试,但我想让它不依赖于外部服务器配置。这就是我的看法:
唯一的问题是如何运行这些虚拟SSH守护进程。
我使用Python和Fabric。
答案 0 :(得分:6)
如果您想完全控制服务器的操作(例如,为了模拟各种问题条件,从而进行真正彻底的测试),我建议twisted:正如本文所示,它使设置变得非常简单您自己的自定义SSH服务器。
如果您更愿意使用现有的ssh服务器,请从列表here中选择一个(或者使用您系统附带的服务器,如果有的话;或者如果您使用的话,请使用sshwindows Windows)并使用Python中的subprocess运行它,作为启动测试的一部分。
答案 1 :(得分:1)
重新实现SSH守护进程并非易事。
如果您唯一的问题是根据现有配置不需要它们,则可以使用-f启动新的 sshd 以指定特定配置,并在给定端口上运行-p。
您可以使用 os.system 来调用shell:
os.system('sshd -f myconfig -p 22022')
答案 2 :(得分:0)
另一个选择是启动运行sshd服务的dockerized容器。您可以使用像这样的docker映像:
我已使用它来测试部署脚本(在fabric之上制作)。
这是您的使用方式。
拉出图像。
➜ docker pull kabirbaidhya/fakeserver
设置服务器的授权密钥。
➜ cat ~/.ssh/id_rsa.pub > /path/to/authorized_keys
运行虚拟服务器。
➜ docker run -d -p 2222:22 \
-v "/path/to/authorized_keys:/etc/authorized_keys/tester" \
-e SSH_USERS="tester:1001:1001" \
--name=fakeserver kabirbaidhya/fakeserver
您现在可以从任何ssh客户端使用fakeserver。例如:
➜ ssh tester@localhost -p 2222
➜ ssh tester@localhost -p 2222 "echo 'Hello World'"
如果这行得通,那么您可以使用paramiko或fabric之上的任何ssh客户端或脚本来对此模拟服务器进行测试。
希望这会有所帮助。