转载 :配置ssh密钥认证自动登录
2016-02-29 12:57
357 查看
原文地址 :https://segmentfault.com/a/1190000000481249
第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。
第二种级别(基于密钥的安全验证),需要依靠密钥,也就是你必须为自己创建一对密钥,并把公有密钥放在需要访问的服务器上。
这里要讨论的ssh密钥认证自动登录正是基于第二种级别的安全验证方式。
步骤如下:
-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱
[适用于osx系统]使用ssh-copy-id-for-OSX工具将公钥复制至ssh服务器
当ssh服务器username用户目录下尚未有.ssh目录时使用此方式
通用方式
但是,每次仍然需要输入ssh username@hostname,仍算不上最优的解决方案,要是能实现一键登录或一条命令登录最好不过了,下面来看看都有那些解决方法
ssh本身也提供了一种快捷的方式来解决这个问题,往~/.ssh/config配置文件添加你的ssh服务器信息即可
添加文件内容格式如下:
保存文件退出后,即可使用别名登录ssh服务器
若有多个ssh账号需要配置,只要在~/.ssh/config空行再写即可,如下:
如果你本地终端使用的是zsh,那就太简单不过了,直接给zsh添加一条别名
如果你本地终端使用的是iterm2还可以添加Profile实现一键登录,具体步骤此处略过
参考链接
-EOF-
在客户端来看,SSH提供两种级别的安全验证。[摘自wikipedia]
第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。
第二种级别(基于密钥的安全验证),需要依靠密钥,也就是你必须为自己创建一对密钥,并把公有密钥放在需要访问的服务器上。
这里要讨论的ssh密钥认证自动登录正是基于第二种级别的安全验证方式。
步骤如下:
1. 在本地机器创建公钥
打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可。ssh-keygen -t rsa -C 'your email@domain.com'
-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱
2. 将公钥复制到ssh服务器
将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种。[适用于osx系统]使用ssh-copy-id-for-OSX工具将公钥复制至ssh服务器
brew install ssh-copy-id ssh-copy-id username@hostname #将username和hostname替换为你的ssh服务器用户名和IP
当ssh服务器username用户目录下尚未有.ssh目录时使用此方式
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服务器 mkdir .ssh #若.ssh目录已存在,可省略此步 cat id_rsa.pub >> .ssh/authorized_keys #将公钥文件id_rsa.pub文件内容追加到authorized_keys文件
3. 快捷登录
完成以上步骤后,即可使用以下命令直接登录ssh服务器,妈妈再也不用担心你记不住密码了ssh username@hostname #将username替换为你的ssh服务器用户名,hostname替换为服务器的ip
但是,每次仍然需要输入ssh username@hostname,仍算不上最优的解决方案,要是能实现一键登录或一条命令登录最好不过了,下面来看看都有那些解决方法
ssh本身也提供了一种快捷的方式来解决这个问题,往~/.ssh/config配置文件添加你的ssh服务器信息即可
vim ~/.ssh/config #若没有该文件,直接新建即可
添加文件内容格式如下:
Host alias #自定义别名 HostName hostname #替换为你的ssh服务器ip或domain Port port #ssh服务器端口,默认为22 User user #ssh服务器用户名 IdentityFile ~/.ssh/id_rsa #第一个步骤生成的公钥文件对应的私钥文件
保存文件退出后,即可使用别名登录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
如果你本地终端使用的是zsh,那就太简单不过了,直接给zsh添加一条别名
echo "alias ssh-to-username='ssh username@hostname'" >> ~/.zshrc #将username和hostname替换为你的服务器信息 source ~/.zshrc #重新加载更改后的zshrc文件 ssh-to-username #使用别名,一条命令即可登录你的ssh服务器
如果你本地终端使用的是iterm2还可以添加Profile实现一键登录,具体步骤此处略过
参考链接
-EOF-
相关文章推荐
- hammer.js 图片拖动
- day21:从Spark架构中透视Job
- 百度禁止网站使用QQ、手机抓取工具
- JAVA学习【8】集合框架HashMap、TreeMap的基本用法
- 【鬼脸原创】JQuery获取元素的方法总结
- day22:RDD的依赖关系彻底解密
- 灵动的菜单展开效果
- Android Activity学习 <一> Activity基础知识和生命周期
- mysql连接数设置
- 运算符优先级
- servlet之ServletContext
- 导致实例逐出的五大问题 (文档 ID 1526186.1)
- 同事写的二分归并排序
- LinearLayout 动态添加子Button,并自动换行
- 体检套餐管理系统的综合版
- ClipDrawable的使用--慢慢展开的图片
- mybatis逆向工程
- leetcode-- Lowest Common Ancestor of a Binary Search Tree
- 大数据论坛
- ASCII码对照表