问题描述
我的本机上有多个ssh key,是我在不同的时期生成的,并添加到了github
- 在我使用git操作访问github或hexo推送博客到github时,使用了是哪一个key?
- 在多个ssh keys下,每次使用git访问远程仓库时使用某个特定key?
ssh.exe
ssh.exe可执行程序是命令行式的,运行形式为ssh [options] destination [command]
[]表示可以省略,而destination参数是必须的
-i identity_file 可以显示指定用户的private key文件,如id_rsa
-F configfile 显示指定配置文件,系统级别(system-wised)的configfile为*/etc/ssh/ssh_config*,
用户级别的为 ~/.ssh/config
ssh的作用
ssh可以使用户远程登录主机,并且在主机执行各种操作(当然这需要用户具有相应的权限)
通过ssh访问github相当于是让本机拥有了访问权限,如果有其他人可以使用这台机器,也可以执行对仓库的读写权限(需要用户原来就具有这些权限),而密码原则上是只有知道密码的人才具有权限。
ssh对通信过程进行了加密,避免了网络攻击,如通信劫持,窃听,中间人攻击等
加密known_hosts
如ssh访问github时,会把github的public key加入这个文件,要对文件内容加密,在/etc/ssh/ssh_config中加入HashKnownHosts yes
Indicates that ssh(1) should hash host names and addresses when they are added to ~/.ssh/known_hosts. These hashed names may be used normally by ssh(1) and sshd(8), but they do not visually reveal identifying information if the file’s contents are disclosed. The default is
no
. Note that existing names and addresses in known hosts files will not be converted automatically, but may be manually hashed using ssh-keygen(1).
解决办法
查看ssh key的指纹
ssh-keygen -lf public-key-file-name
对比github ssh key的指纹,就可以知道
调试ssh
ssh.exe使用时-v选项可以打印debug信息
-v Verbose mode. Causes
ssh
to print debugging messages about its progress. This is helpful in debugging connection, authentication, and configuration problems. Multiple-v
options increase the verbosity. The maximum is 3.
–Verbose选项在许多命令行程序中都有用
配置文件的级别
许多linux命令行程序都会有配置文件,级别分为三级,例如git
- /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 –system 选项,读写的就是这个文件。
- ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 –global 选项,读写的就是这个文件。
- 当前仓库的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前仓库有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
system-wised
per-user
current dir-or-project
翻译
encrypt 加密
authentication 认证
certificate 证书
directive 指令 指示符