SSH
[TOC]
什么是SSH Key?
SSH全称Secure SHell
,即十分安全的Shell,是IETF(Internet Engineering Task Force)的Network Working Group所制定的一种协议,用来取代传统的telnet和R系列命令(rlogin,rsh,rexec等)远程登陆和远程执行命令的工具,实现对远程登陆和远程执行命令加密。防止由于网络监听而出现的密码泄漏,对系统构成威胁。
SSH协议目前有SSH1、SSH2两个版本,SSH2兼容SSH1,目前的实现主要有
OpenSSH 由 OpenBSD组织 开发 免费软件
SSH Communications 由 SSH Communications Security Corporation 开发 商业软件
OpenSSH 因为免费,所以广泛使用于开源系统中,如Linux,其软件组成为
sshd ——SSH服务端程序
sftp-server ―― SFTP服务端程序(类似FTP但提供数据加密的一种协议)
scp ―― 非交互式sftp-server的客户端,用来向服务器上传/下载文件
sftp ―― 交互式sftp-server客户端,用法和ftp命令一样。
slogin ―― ssh的别名
ssh ―― SSH协议的客户端程序,用来登入远程系统或远程执行命令
ssh-add ―― SSH代理相关程序,用来向SSH代理添加dsa key
ssh-agent ―― ssh代理程序
ssh-keyscan ―― ssh public key 生成器
什么是 known_hosts?
位置在 ~/.ssh/konwn_hosts
中
第一次ssh登录后,ssh会把登录的ssh指纹(fingerprint)存放在用户目录的.ssh/know_hosts
中,如果远程系统重装过,ssh指纹会改变,需要删除后,重新进行登录。
记录链接到对方时,对方给的host key
,每次连线都会检查目前对方给的host key 与你记录的host key是否相同,进行简单的验证。
重装服务器时,需要先进入自己电脑的 ~/.ssh/konwn_hosts
删除原有的服务器的host key
如何生成SSH Key?
检查SSH Key是否存在?
ls -al ~/.ssh
# 查看是否存在 ssh key
生成新的SSH Key
ssh-keygen -t rsa -C "邮箱"
默认在相应路径下生成,即: /root/.ssh/
系统会询问你 是否修改路径?输入密码?确认密码? 三个问题都可以敲空格飘过
随后,在/root/.ssh/下会生成两个文件,分别是公钥 id_rsa.pub ,私钥 id_rsa
注意点
.ssh目录权限是 ssh-keygen自己生成的不要乱改,这些权限不能多也不能少,少了则无法使用,多了则不安全
.ssh目录权限是700
id_rsa 权限是600
authorized_keys 权限是 644
如果你需要登陆服务器并执行不止一个命令,必须要把命令用单引号或双引号引起来:
ssh 172.18.6.227 “cd /root && ls “
参考文献
[1] minmig,ssh key 免密码登录[EB/OL] http://blog.chinaunix.net/uid-773723-id-152230.html
[2] Jackie li,linux ssh 使用深度解析(key登录详解)[EB/OL] http://blog.lizhigang.net/archives/249