如何通过终端在 Mac OS X 中重新加载 ssh 配置文件

如何通过终端在 Mac OS X 中重新加载 ssh 配置文件

当我更新 ssh 配置文件以便切换当前的 github 帐户时,除非我重新启动 iTerm,否则更改将无法正常工作。我正在编写一个脚本来自动切换 github 帐户,我想让脚本重新加载更新的配置文件中的配置设置。我该如何实现这一点?

答案1

就我而言,我最终发现问题不在于配置文件(ssh -vvv -F /dev/null -i /some/path/some_other_key甚至将旧密钥移到~/.ssh/其他地方,但仍然设法从任何地方变出旧密钥),而是ssh agent。我不得不用它清除它ssh-add -D

man ssh_config澄清-i应该ssh优先于~/.ssh/config文件;所以如果你这样做了但仍然不起作用,那么一些未记录的更高优先级的权力就会介入。

答案2

你可能想看看Atlassian 文档关于使用多个身份。我认为您所描述的情况(切换帐户)可能最好使用可同时容纳多个帐户的 SSH 配置文件来处理,而不是使用脚本。

config它们为~/.ssh/config 文件提供了以下示例:

# Default GitHub user
Host github.com
 HostName github.com
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/personalid

# Work user account
Host bitbucket.org
 HostName bitbucket.org
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/workid

答案3

当我在寻找“刷新”文件的方法时,我意识到我真正寻找的是一种自动完成命令的方法,

正如@Jakuje 上面提到的,无需刷新

对于那些感兴趣的人,自动完成脚本是:

complete -o default -o nospace -W "$(grep "^Host" $HOME/.ssh/config | cut -d" " -f2)" scp sftp ssh

我发现这里

添加上述脚本.bash_profile然后运行source .bash_profile

相关内容