我想通过 SSH 在我的网络(静态以太网)上的多台计算机之间进行通信。为了做到这一点,我需要在每次登录特定机器时运行 ssh-add,我该怎么做才能设置一次,并且每次登录或重新启动时都不会要求我输入密码我的机器?
我知道有一种方法可以在bash_profile文件中添加一些行,但是每次重新启动/登录到特定机器时我仍然需要输入密码。
if [ -z "$SSH_AUTH_SOCK" ] ; then
eval `ssh-agent -s`
ssh-add
fi
Run Code Online (Sandbox Code Playgroud) 我有一组用于登录帐户和服务器的 SSH 密钥。但是,自从我将我的主要工作配置文件移动到 USB 驱动器(出于同步和易用性以及其他原因)以来,我一直无法直接使用配置文件中的 SSH 密钥进行身份验证,而不得不创建本地副本。
正常的 SSH 工作流程通常会进行
ssh-add $HOME/.ssh/id_server_key
ssh username@domain
Run Code Online (Sandbox Code Playgroud)
哪个工作没有问题。但是,为了防止每台机器都有我的密钥的副本,我将它们移到了 xexternal 驱动器,USB 格式为vfat. 那么工作流应该变成这样:
ssh-add /run/media/myself/USB/.ssh/id_server_key
ssh username@domain
Run Code Online (Sandbox Code Playgroud)
......这不起作用。SSH 抱怨做一些事情来保护我:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @警告:未受保护的私钥文件!@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ “id_server_key”的权限 0644 太开放了。 要求其他人无法访问您的私钥文件。 此私钥将被忽略。 错误的权限:忽略键:id_server_key 权限被拒绝(公钥)。
虽然我可以理解,但在这种情况下它并没有真正保护我。
USB 驱动器在我的发行版中自动挂载,带有 (我认为) 的 fmask 022。我可以卸载并重新挂载带有 fmask 的 USB 驱动器,077但这将 (1) 每次都需要超级用户权限,并且 (2) 影响设备中的每个文件,而不仅仅是 SSH 密钥。
我已经尝试为密钥创建一个符号链接,即使之前使用了umask我在一些提示和技巧中看到的:
cd .ssh
umask 077
ln -s /run/media/myself/USB/.ssh/id_server_key
Run Code Online (Sandbox Code Playgroud)
但是权限不能以这种方式用于符号链接,所以我什么也没得到。
那么,如果目标是在机器上没有密钥的物理副本,我在这里有哪些可用的选项 …