ssh

问题描述

我的本机上有多个ssh key,是我在不同的时期生成的,并添加到了github

  1. 在我使用git操作访问github或hexo推送博客到github时,使用了是哪一个key?
  2. 在多个ssh keys下,每次使用git访问远程仓库时使用某个特定key?

ssh.exe

ssh.exe可执行程序是命令行式的,运行形式为ssh [options] destination [command]

[]表示可以省略,而destination参数是必须的

image-20210315205315358

-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的指纹,就可以知道

image-20210315213521277

调试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 指令 指示符