当我更新 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