利用 ssh 的用户配置文件 config 管理 ssh 会话
2016-04-14 21:39
357 查看
用过终端登录远程服务器或者VPS的童鞋都用过类似的命令:
如图所示(一路按enter键):
公钥(id_rsa.pub)和私钥(id_rsa)默认生成在:
上面的username换成你的用户名,和服务器地址。然后你需要登录到你的远程服务器上操作。
输入密码后登录,也许是你最后一次登录服务器需要密码。
大功告成,
新建一个自定义ssh config文件
用VIM或者其他编辑器打开config文件,配置config, 粘贴如以下格式内容,保存:
User 这里填用户名(如:root)
HostName 这里填服务器地址也可以是域名(如:server.xxoo.com)
Port 这里填服务器open-ssh端口(默认:22)
IdentityFile 这里是刚刚生成的私钥文件地址(如~/.ssh/id_rsa)
[/code]
其实这个东西可以用来配置你连接不同的远程服务器,比如有两个github账户,或者两个git服务器等等。
貌似你现在可以用ssh vps登录远程服务器了。一直记不住这些东东,就先上这一笔记吧,仅供参考。
PS..
a new comment. 如果用ssh-keygen -t rsa -C "注释内容,一般为邮件地址",生成的公钥后面会带上注释,暂时我也不知道拿来干嘛的。。。
=====================================================================================================
通常利用 ssh 连接远程服务器,一般都要输入以下类似命令:
如果拥有多个 ssh 账号,特别是像我这种喜欢在终端里直接 ssh 登陆,不用 PuTTY、SecureCRT之类的
ssh 客户端的,要记住每个ssh 账号的参数,那是多么蛋疼的事情。
还好,ssh 提供一种优雅且灵活的方式来解决这个问题,就是利用 ssh 的用户配置文件 config 管理 ssh 会话。ssh 的用户配置文件是放在当前用户根目录下的 .ssh 文件夹里(~/.ssh/config,不存在则新创建一个),其配置写法如下:
如,
Host lcp1root
HostName 192.168.255.30
User root
IdentityFile ~/.ssh/file_id_rsa
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
有了这些配置,就可以这样用 ssh 登陆服务器了:
这里以免费的 ssh shell -- CJB 为例,介绍指定密钥文件配置连接 ssh 的用法,如果没有可以在这里注册一个账号。
这里假设你有一个名为 user 的 CJB ssh 账号,那么用户名就是 "user",端口使用 ssh 默认的端口 "22",CJB 默认使用的主机名是 "shell.cjb.net",不过在镇里这个域名已经被 DNS 污染用不了,只能用 IP 地址 216.194.70.6 代替。
PS:上面的 CJB 主机名 IP 可以通过 dig 获得
使用密钥的好处就是省去每次 ssh 登陆服务器时都要输入登陆密码的操作,这里使用 ssh-keygen 生成 ssh 密钥(以下操作是在 ~/.ssh/ 目录里执行):
这里使用 rsa 的加密方式(另外一种加密方式是 dsa),中间会询问密钥生成的位置,这里只输入 cjb,在当前位置生成名为 cjb 的密钥,接着会询问是否要设置一个密码(passphrase),这里留空,直接按回车就行(本来就不想登陆输入密码了...),最后,会在当前目录路径下生成一个名为 cjb 的私钥,一个名为cjb.pub 的公钥。
把公钥 cjb.pub 上传到远程 cjb 服务器的 ~/.ssh/ 目录下:
上传完后,把公钥 cjb.pub 的内容复制到 authorized_keys 文件里(不存在则新创建一个):
以 ssh publickey 的形式访问,对当前用户根目录下的 .ssh 文件夹里的目录文件是要有一定的权限要求,之前遇到过 ssh publickey 配置好了,不过用 publickey 登陆验证时则无效。所以,最好设下 .ssh 目录权限为 700,authorized_keys 权限为 600:
当然,用密钥的方式连接服务器是需要服务器上的 ssh 支持的,需要 ssh 的配置文件(默认是在 etc/ssh/sshd_config)里的 PubkeyAuthentication 设置成 yes。如果要改登陆的端口,直接把 Port 改成你想要的端口值就行。修改完后重启下 ssh ,配置就生效:
还好,CJB 提供的免费 ssh 支持密钥访问。
这样,连接 cjb 的密钥配置完成,本地 ssh 用户配置文件 config 里的 IdentityFile 值写为私钥 cjb 的文件路径 "~/.ssh/cjb" 就行,最后,本地 ssh 用户配置文件 config 的内容如下:
配置完成后,就可以在终端直接输入 "ssh cjb" 畅通无阻地连上远程的 cjb 服务器上了。
如果有多个 ssh 账号需要配置,在 config 文件里隔行分开写就行,例如:
嘿嘿,如果你也用 ssh 作 socks5 代理翻墙,以后不用这样写了:
可以省去 user 后面的,直接写成这样:
上面的 scp 传送也可以简写成这样:
执行远程 ssh 命令:
打包一个文件(假设当前目录有个名为 test 的文件夹),接着上传到远程服务器,最后解压文件
ssh username@hostname.com,输入密码后就可以登录远程服务器了,但是人总是懒滴,Here,免输入密码登录远程服务器的方法:
打开终端,本地生成id_rsa(私钥),id_rsa.pub(公钥):
ssh-keygen -t rsa
如图所示(一路按enter键):
公钥(id_rsa.pub)和私钥(id_rsa)默认生成在:
~/.ssh/ 目录下。
拷贝公钥到远程服务器上,或则其他地方whatever…
scp ~/.ssh/id_rsa.pub username@hostname.com:~/.ssh/
上面的username换成你的用户名,和服务器地址。然后你需要登录到你的远程服务器上操作。
登录远程服务器操作
ssh username@hostname.com
输入密码后登录,也许是你最后一次登录服务器需要密码。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
大功告成,
logout如果你没操作错误的话,你就可以在客户端输入
ssh username@hostname.com登录服务器了,不用输入密码。
配置SSH CONFIG
touch ~/.ssh/config
新建一个自定义ssh config文件
vim ~/.ssh/config
用VIM或者其他编辑器打开config文件,配置config, 粘贴如以下格式内容,保存:
Host vps(这里是自定义的host简称,以后连接远程服务器就可以用命令[code]ssh vps)
User 这里填用户名(如:root)
HostName 这里填服务器地址也可以是域名(如:server.xxoo.com)
Port 这里填服务器open-ssh端口(默认:22)
IdentityFile 这里是刚刚生成的私钥文件地址(如~/.ssh/id_rsa)
[/code]
其实这个东西可以用来配置你连接不同的远程服务器,比如有两个github账户,或者两个git服务器等等。
貌似你现在可以用ssh vps登录远程服务器了。一直记不住这些东东,就先上这一笔记吧,仅供参考。
PS..
ssh-keygen命令中-t代表生成文件的类型如rsa,dsa等等,然后-C参数貌似是一个注释吧,Provides
a new comment. 如果用ssh-keygen -t rsa -C "注释内容,一般为邮件地址",生成的公钥后面会带上注释,暂时我也不知道拿来干嘛的。。。
=====================================================================================================
通常利用 ssh 连接远程服务器,一般都要输入以下类似命令:
ssh 客户端的,要记住每个ssh 账号的参数,那是多么蛋疼的事情。
还好,ssh 提供一种优雅且灵活的方式来解决这个问题,就是利用 ssh 的用户配置文件 config 管理 ssh 会话。ssh 的用户配置文件是放在当前用户根目录下的 .ssh 文件夹里(~/.ssh/config,不存在则新创建一个),其配置写法如下:
Host lcp1root
HostName 192.168.255.30
User root
IdentityFile ~/.ssh/file_id_rsa
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
有了这些配置,就可以这样用 ssh 登陆服务器了:
这里假设你有一个名为 user 的 CJB ssh 账号,那么用户名就是 "user",端口使用 ssh 默认的端口 "22",CJB 默认使用的主机名是 "shell.cjb.net",不过在镇里这个域名已经被 DNS 污染用不了,只能用 IP 地址 216.194.70.6 代替。
PS:上面的 CJB 主机名 IP 可以通过 dig 获得
把公钥 cjb.pub 上传到远程 cjb 服务器的 ~/.ssh/ 目录下:
这样,连接 cjb 的密钥配置完成,本地 ssh 用户配置文件 config 里的 IdentityFile 值写为私钥 cjb 的文件路径 "~/.ssh/cjb" 就行,最后,本地 ssh 用户配置文件 config 的内容如下:
如果有多个 ssh 账号需要配置,在 config 文件里隔行分开写就行,例如:
相关文章推荐
- python numpy 使用笔记 矩阵操作
- 0414结对2.0
- Android实现网络音乐播放器
- FZU 2150 Fire Game
- CCF认证经验
- linux 的 socket例子
- OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五
- final 、finally 和 finalize()的区别
- 32.3-4AC自动机
- 进一步封装highchart,打造自己的图表插件:jHighChart.js
- 【Android】Android中期项目设计题目-界面设计小作业
- aspcms网站访问出现3706错误, 错误描述:未找到提供程序。该程序可能未正确安装,解决的方法。
- C语言-郝斌笔记-001求二次方程的根
- 在 IIS 上创建 FTP 站点
- HttpServletResponse详解
- Android获得当前前台运行的app包名
- ToDo-List-><学习Python>
- PE文件的执行顺序
- dreamwear怎么制作二级列表
- Dubbo高级篇_09_Dubbo负载均衡策略