ssh使用详解
简单来说,ssh是一种 网络协议 ,用于计算机之间的加密登录。如果一个用户从本地计算机,使用ssh协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
SSH 之所以安全是采用了公钥加密的方式,通过客户自己签发公钥加密用户密码,再通过主机持有的私钥解密;不像 HTTPS 协议存在证书管理中心CA用于验证公钥的合法性,因此,存在被中间人劫持的风险,即劫持登录请求发送篡改的公钥来截获用户登录密码,俗称”中间人攻击“;
不过 SSH 存在一套自有的验证方式:口令验证及密钥验证,可有效避免大部分的攻击;
使用上述命令测试连接性及验证流程;
通过 ssh-keygen 工具生成本地公钥文件,常用命令如下:
在 $HOME/.ssh/ 目录下,会新生成两个文件: id_rsa.pub 和 id_rsa 。 id_rsa.pub 是公钥, id_rsa 是私钥,其中 id_rsa 为默认文件名称,若如上图指定了文件路径及名称,则按照指定路径及文件名生成;
说明:若 ssh 登录使用密钥验证方式登录,则需要输入私钥的密码(生成密钥时指定的密码),若使用 ssh-agent 代理,则在同一个 session 会话下,只需要输入一次私钥密码即可,由 ssh-agent 帮我们代理,避免每次登录都需要输入私密码;
若登录时未开启,可手动开启 ssh-agent ,可通过如下命令:
添加生成的 SSH key 到 ssh-agent :
查看添加的 SSH key :
若需要免密登录,则需要将用户的 public key 文件内存追加复制到登录主机的 authorized_keys 配置文件中(默认路径为 ~/.ssh/authorized_keys ),或者直接通过 ssh-copy-id 工具完成,具体如下:
使用上述命令后即可实现 免密登录 ;
ssh 配置包括系统级别的(针对客户端的默认为 /etc/ssh/ssh_config ,针对服务端的``/etc/ssh/sshd_config )及用户级别的配置文件(默认为 ~/.ssh/config`);且配置文件存在优先级,低优先级的配置项可视作默认值;而高优先级的配置项则会覆盖默认值。按优先级,有如下排序:
/etc/ssh/config 配置文件选项如下:
/etc/ssh/sshd_config 配置文件选项如下:
常用的选项如下:
ssh -T git@github.com 验证连接性,成功如下:
ssh配置文件详解
git-ssh 配置和使用
ssh-keygen - Generate a New SSH Key
最佳搭档:利用 SSH 及其配置文件节省你的生命