









原文地址 :https://segmentfault.com/a/1190000000481249
- 第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。
- 第二种级别(基于密钥的安全验证),需要依靠密钥,也就是你必须为自己创建一对密钥,并把公有密钥放在需要访问的服务器上。
这里要讨论的ssh密钥认证自动登录正是基于第二种级别的安全验证方式。
步骤如下:
打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可。
ssh-keygen -t rsa -C 'your email@domain.com'
-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱
将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种。
brew install ssh-copy-id
ssh-copy-id username@hostname #将username和hostname替换为你的ssh服务器用户名和IP
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
scp ~/.ssh/id_rsa.pub username@hostname:~/ #将公钥文件复制至ssh服务器
ssh username@hostname
完成以上步骤后,即可使用以下命令直接登录ssh服务器,妈妈再也不用担心你记不住密码了
ssh username@hostname #将username替换为你的ssh服务器用户名,hostname替换为服务器的ip
但是,每次仍然需要输入ssh username@hostname,仍算不上最优的解决方案,要是能实现一键登录或一条命令登录最好不过了,下面来看看都有那些解决方法
vim ~/.ssh/config #若没有该文件,直接新建即可
添加文件内容格式如下:
Host alias #自定义别名
HostName hostname
保存文件退出后,即可使用别名登录ssh服务器
ssh alias #alias是你在~/.ssh/config文件配置的别名
若有多个ssh账号需要配置,只要在~/.ssh/config空行再写即可,如下:
Host foo
HostName 192.168.2.222
Port 22
User test
IdentityFile ~/.ssh/id_rsa
Host alias
HostName hostname
Port port
User user
echo "alias ssh-to-username='ssh username@hostname'" >> ~/.zshrc #将username和hostname替换为你的服务器信息
source ~/.zshrc
-EOF-
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。