MacOS X终端里SSH会话管理
http://codelife.me/blog/2012/09/01/ssh-session-profile-management-in-terminal-of-macos-x/
本文介绍如何在终端里使用ssh命令方便的管理常用的ssh访问会话,主要针对MacOS X系统编纂,并在Mountain Lion下测试通过。但是同样适用与安装有Bash终端的*uix系统。
虽然windows没有对SSH的原生支持,但是XShell和Putty都挺好用的。日常工作需要维护多台linux服务器,用户名和密码多了记不住,所有非常依赖会话记忆功能。
在Mac平台没有找到合适的与Putty功能类似的软件。可能由于*nix系的操作系统对SSH原生支持,开发者也就没有兴趣去折腾桌面软件,当然也可能是有好的,只是没有找到。
在Terminal里使用SSH便捷登录需要解决三个问题
- 免密码
- 别名快捷登录
- 自动补全
免密码
SSH有两种验证方式:密码和非对称密钥。虽然相比密码来说,非对称密钥的安全性会低一些_(某用户拥有你本地root权限,可能就可以操作你的远程服务器,当然密钥本身也设置有密码)_,但是这种与系统绑定的信任机制给无人值守的远程拷贝和系统备份提高了便利。
配置步骤如下:
创建密钥对
开启终端并执行
ssh-keygen -t rsa依照提示完成即可,然后将
id_rsa和id_rsa.pub文件拷贝到~/.ssh/目录。拷贝公钥到远程服务器
需要将公钥
id_rsa.pub的内容拷贝到远程服务器~/.ssh/authorized_keys文件里。该文件里可能不存在,需要新建。若该文件已经存在,里面可能有其他用户添加的公钥,所以需要将公钥id_rsa.pub的内容追加在文件尾部(独立成行),而不是覆盖该文件. * 若authorized_keys已存在cat ~/.ssh/id_rsa.pub | ssh username@example.com "cat - >> ~/.ssh/authorized_keys"若
authorized_keys不存在scp ~/.ssh/id_rsa.pub username@example.com:~/.ssh/authorized_keys更好的方式(无论
authorized_keys在与不在)ssh-copy-id username@example.com
[可选] 提高系统安全性
chmod 0600 ~/.ssh/authorized_keys[注意]如果系统开启的SELinux,完成上述配置以后仍然会提速输入密码,需要执行如下命令
restorecon -R -v /root/.ssh
别名快捷登录
SSH可以在/etc/ssh_config或者~/.ssh/config文件里给远程连接主机配置别名。相当与Putty里的会话管理。
在~/.ssh/config里添加如下配置
Host dv
HostName example.com
User domainuser
然后在终端里执行ssh dv,就相当于ssh domainuser@example.com
至此,已经可以在命令行里实现类似Putty里免密码快捷登录了。但是随着~/.ssh/config里服务器别名项的增多,或者某些服务器长期不用,别名记不起来了。当然使用cat和grep命令可以轻松搞定。如果ssh命令能如ls命令有自动补全就好了。这个真可以有。
自动补全
往~/.bash_profile文件末尾追加如下行
complete -W "$(echo `cat ~/.ssh/config | grep 'Host '| cut -f 2 -d ' '|uniq`;)" ssh
重启终端,ssh + TAB是不是很酷。
参考文献
- SSH login without password using OS X
- Creating SSH Shortcuts Using SSH Config
- ssh autocomplete
- PASSWORDLESS ROOT SSH PUBLIC KEY AUTHENTICATION ON CENTOS 6
MacOS X终端里SSH会话管理的更多相关文章
- 如何为MacOS X终端设置代理
http://codelife.me/blog/2012/09/02/how-to-set-proxy-for-terminal/ 本文介绍如何在MacOS X终端里使用代理访问网络,虽然只在Moun ...
- 利用 ssh 的用户配置文件 config 管理 ssh 会话
http://dhq.me/use-ssh-config-manage-ssh-session 利用 ssh 连接远程服务器,一般都要输入以下类似命令: 1 ssh user@hostname -p ...
- 利用ssh的用户配置文件config管理ssh会话
通常利用 ssh 连接远程服务器,一般都要输入以下类似命令: ssh user@hostname -p port 如果拥有多个 ssh 账号,特别是像我这种喜欢在终端里直接 ssh 登陆,不用 PuT ...
- day29 主机管理-堡垒机2-原生ssh会话记录
day29课堂代码:https://github.com/liyongsan/git_class/tree/master/day29 课堂笔记: 通过原生Ssh 记录会话1. 在我们自己的堡垒机交互脚 ...
- 《Linux就该这么学》培训笔记_ch09_使用ssh服务管理远程主机
<Linux就该这么学>培训笔记_ch09_使用ssh服务管理远程主机 文章最后会post上书本的笔记照片. 文章主要内容: 配置网络服务 远程控制服务 不间断会话服务 书本笔记 配置网络 ...
- 全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)
注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 Mac 新用户,如何在 Mac OS X 系统上配置开发与上网环境,另有<全新 Mac 安装指南(通用篇)>作 ...
- 第9章 使用ssh服务管理远程主机。
章节简述: 学习使用nmtui命令配置网卡参数.手工将多块网卡做绑定.使用nmcli命令查看网卡信息和使用ss命令查看网络及端口状态. 完整演示sshd服务配置方法并详细讲述每个参数的作用,实战基于密 ...
- script —— 终端里的记录器
当 你在终端或者控制台工作时,你可能想要记录在终端中所做的一切.这些记录可以用来当作史料,保存终端所发生的一切.比如说,你和一些Linux管理员们同 时管理着相同的机器,或者你让某人远程登陆到了你的服 ...
- Django项目:堡垒机(Linux服务器主机管理系统)--03--03堡垒机在Linux系统里记录会话日志02/02
#main.py #本文件写所有的连接交互动作程序 # ————————————————03堡垒机在Linux系统里记录会话日志 开始———————————————— from Fortress im ...
- mac 终端 常用命令,MacOS 常用终端命令大全,mac 在当前目录打开终端
MacOS 常用终端命令大全:目录操作dircmp——比较两个目录的内容——dircmp dir1 dir2文件操作pg分页格式化显示文件内容——pg filenameod——显示非文本文件的内容—— ...
随机推荐
- Python日志模块:实战应用与最佳实践
本文详细解析了Python的logging模块,从基本介绍到实际应用和最佳实践.我们通过具体的代码示例解释了如何高效地使用这个模块进行日志记录,以及如何避免常见的陷阱,旨在帮助读者更好地掌握这个强大的 ...
- 河南省CCPC大学生程序设计竞赛赛后总结yy
这次的ccpc总体来说,取得的成绩并不理想,首先是题目解决的数量较少,其次是罚时太多了.开始也是找到了签到题,按理说应该不难拿下,虽然大家解决这道签到题都不是很快,但是我们小队在比赛已经过去两个小时左 ...
- KVM 动态调整 qcow2 硬盘
动态扩容 参考:https://cloud-atlas.readthedocs.io/zh_CN/latest/kvm/kvm_vdisk_live.html 未关闭虚拟机,直接在宿主机器上qemu- ...
- Robot Framework 自动化测试随笔(二)
二.Web自动化(1) 1.安装selenium2library库 pip install robotframework-selenium2library 2.指定报告的生成路径 在[Run]标签 ...
- CTF比赛中Web的php伪协议类型题小结
php协议类型 file:// - 访问本地文件系统 http:// - 访问 HTTP(s) 网址 ftp:// - 访问 FTP(s) URLs php:// - 访问各个输入/输出流(I/O s ...
- TCP如何实现可靠传输、流量控制、拥塞控制
上一篇文章中讲述了TCP首部的存储的数据,这一篇来聊聊这些数据帮助TCP实现一些特性. 可靠传输 TCP传输会保障数据的可靠和完整,如果数据传输过程丢失了,会重新传输. 保障的第一种协议方式是 停止等 ...
- uni-app+h5puls 编写相机拍照
<template> <view class="camera-page"> <image :src="imgSrc" v-if=& ...
- Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.so
在安装Docker以后,执行命令出现错误. Got permission denied while trying to connect to the Docker daemon socket at u ...
- C++模板介绍
C++ 模板 C++ 模板是一种强大的泛型编程工具,它允许我们编写通用的代码,可以用于处理多种不同的数据类型.模板允许我们在编写代码时将类型作为参数进行参数化,从而实现代码的重用性和灵活性. 在 C+ ...
- 【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
前言 缘由 博友的需求就是我最大的动力 博友一说话,本狗笑哈哈.博友要我写啥,我就写啥. 特来一篇关于SpringBoot接口返回结果及异常统一处理,虽说封不封装都能用,但咱后端也得给前端小姐姐留个好 ...