刚接触 ServerFault,但已在 StackOverflow 上呆了几个月并且很喜欢它。
我每天都要在 5 台服务器上工作,这 5 台服务器已经设置了一段时间了。
这些服务器都是 AIX 7.1,并且非常相似,运行同一应用程序的所有不同环境。
我在这 5 个服务器上都有同一个用户,并且它们的目录结构几乎相同。
为了完成日常工作,我通常在 Windows 笔记本电脑上打开与所有服务器的 putty 会话,但它们之间也会有大量 ssh 和 scp 通信。
我想设置基于 SSH 密钥的身份验证,这样就不需要每次都输入密码。还允许一些自动化脚本在它们之间运行。由于我也需要这个来实现自动化,所以我不打算使用 ssh-agent,而是用空密码生成密钥对。我知道它不太安全。
我一直在想的是……最好的方法是什么?我是否应该在每台服务器上生成不同的密钥对,并将每个公钥分发给其他 4 台服务器?或者我应该将密钥对关联到用户(所有 5 台服务器上都是同一个)并且只有一个密钥对?
我甚至不确定最后这个想法是否可行,因为我会让用户从服务器 A(ssh 客户端)登录到服务器 B(ssh 服务器),其中 ssh 服务器的密钥对与 ssh 客户端的密钥对相同……?还是只有客户端向服务器提供密钥,这可能吗?
我想我需要读一读 SSH 方面的书,并了解更多相关内容,但我想我会把它拿出来,看看其他人有什么建议。
答案1
我总是为每个客户端设备(我使用 ssh 进行连接的设备)生成一个密钥。这样可以更轻松地删除可能被泄露的密钥 - 例如,如果我丢失了平板电脑,可以从我的所有服务器中删除平板电脑密钥。
从我的本地机器登录到一台服务器,然后再登录到另一台服务器,ssh-agent 可以处理这个。
对于服务器之间 SSH 的脚本,它们有自己的密钥,与我自己的密钥分开,并且对于每个服务器对都是唯一的。