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的原生支持,但是XShellPutty都挺好用的。日常工作需要维护多台linux服务器,用户名和密码多了记不住,所有非常依赖会话记忆功能。

在Mac平台没有找到合适的与Putty功能类似的软件。可能由于*nix系的操作系统对SSH原生支持,开发者也就没有兴趣去折腾桌面软件,当然也可能是有好的,只是没有找到。

在Terminal里使用SSH便捷登录需要解决三个问题

  • 免密码
  • 别名快捷登录
  • 自动补全

免密码

SSH有两种验证方式:密码和非对称密钥。虽然相比密码来说,非对称密钥的安全性会低一些_(某用户拥有你本地root权限,可能就可以操作你的远程服务器,当然密钥本身也设置有密码)_,但是这种与系统绑定的信任机制给无人值守的远程拷贝和系统备份提高了便利。

配置步骤如下:

  1. 创建密钥对

    开启终端并执行

    ssh-keygen -t rsa

    依照提示完成即可,然后将id_rsaid_rsa.pub文件拷贝到~/.ssh/目录。

  2. 拷贝公钥到远程服务器

    需要将公钥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
  3. [可选] 提高系统安全性

    chmod 0600 ~/.ssh/authorized_keys
  4. [注意]如果系统开启的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里服务器别名项的增多,或者某些服务器长期不用,别名记不起来了。当然使用catgrep命令可以轻松搞定。如果ssh命令能如ls命令有自动补全就好了。这个真可以有。

自动补全

~/.bash_profile文件末尾追加如下行

complete -W "$(echo `cat ~/.ssh/config | grep 'Host '| cut -f 2 -d ' '|uniq`;)" ssh

重启终端,ssh + TAB是不是很酷。

参考文献

  1. SSH login without password using OS X
  2. Creating SSH Shortcuts Using SSH Config
  3. ssh autocomplete
  4. PASSWORDLESS ROOT SSH PUBLIC KEY AUTHENTICATION ON CENTOS 6

MacOS X终端里SSH会话管理的更多相关文章

  1. 如何为MacOS X终端设置代理

    http://codelife.me/blog/2012/09/02/how-to-set-proxy-for-terminal/ 本文介绍如何在MacOS X终端里使用代理访问网络,虽然只在Moun ...

  2. 利用 ssh 的用户配置文件 config 管理 ssh 会话

    http://dhq.me/use-ssh-config-manage-ssh-session 利用 ssh 连接远程服务器,一般都要输入以下类似命令: 1 ssh user@hostname -p ...

  3. 利用ssh的用户配置文件config管理ssh会话

    通常利用 ssh 连接远程服务器,一般都要输入以下类似命令: ssh user@hostname -p port 如果拥有多个 ssh 账号,特别是像我这种喜欢在终端里直接 ssh 登陆,不用 PuT ...

  4. day29 主机管理-堡垒机2-原生ssh会话记录

    day29课堂代码:https://github.com/liyongsan/git_class/tree/master/day29 课堂笔记: 通过原生Ssh 记录会话1. 在我们自己的堡垒机交互脚 ...

  5. 《Linux就该这么学》培训笔记_ch09_使用ssh服务管理远程主机

    <Linux就该这么学>培训笔记_ch09_使用ssh服务管理远程主机 文章最后会post上书本的笔记照片. 文章主要内容: 配置网络服务 远程控制服务 不间断会话服务 书本笔记 配置网络 ...

  6. 全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)

    注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 Mac 新用户,如何在 Mac OS X 系统上配置开发与上网环境,另有<全新 Mac 安装指南(通用篇)>作 ...

  7. 第9章 使用ssh服务管理远程主机。

    章节简述: 学习使用nmtui命令配置网卡参数.手工将多块网卡做绑定.使用nmcli命令查看网卡信息和使用ss命令查看网络及端口状态. 完整演示sshd服务配置方法并详细讲述每个参数的作用,实战基于密 ...

  8. script —— 终端里的记录器

    当 你在终端或者控制台工作时,你可能想要记录在终端中所做的一切.这些记录可以用来当作史料,保存终端所发生的一切.比如说,你和一些Linux管理员们同 时管理着相同的机器,或者你让某人远程登陆到了你的服 ...

  9. Django项目:堡垒机(Linux服务器主机管理系统)--03--03堡垒机在Linux系统里记录会话日志02/02

    #main.py #本文件写所有的连接交互动作程序 # ————————————————03堡垒机在Linux系统里记录会话日志 开始———————————————— from Fortress im ...

  10. mac 终端 常用命令,MacOS 常用终端命令大全,mac 在当前目录打开终端

    MacOS 常用终端命令大全:目录操作dircmp——比较两个目录的内容——dircmp dir1 dir2文件操作pg分页格式化显示文件内容——pg filenameod——显示非文本文件的内容—— ...

随机推荐

  1. 巧用 nc 命令传输文件

    今天在业务上云的时候,遇到了些问题.最终发现问题的根源不好排查,于是-- 把生产环境的全量配置文件,还有日志全量打包下载到开发机器分析! 刚入职不是很久的整个运维团队,也不是很熟悉生产环境(有时候觉得 ...

  2. Jenkins用户管理(二):不同用户分配不同的任务访问权限

    需求:不同用户访问到不同的Jenkins任务. 依赖插件:Role-based Authorization Strategy 1. 插件安装 进入[系统管理]-[插件管理]-[可用插件],搜索Role ...

  3. Day11:KMP、字典树、AC自动机、后缀数组、manacher

    KMP算法 前言 KMP算法是一个著名的字符串匹配算法,效率很高,但是确实有点复杂. 简介 KMP 算法是 D.E.Knuth.J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 ...

  4. JS自制极简日历Demo

    这个日历界面不属于任何插件,纯粹用最基本的JS函数获取到每个位置对应的日期,然后再通过遍历拼接table表单的方式赋值到HTML里面进行展示,日历效果的显示,其中使用到的文件只需要一个Jquery的J ...

  5. 【技术实战】Vue功能样式实战【六】

    需求实战一 样式展示 代码展示 <template> <ARow> <ACol style="background-color:#F1F4F5 "&g ...

  6. Linux 过滤进程和端口号

    IDEA覆盖率测速显示百分比 ctrl + alt + F6 取消勾选 ps - ef | grep java过滤Java进程 netstat -anop | grep 74933 过滤端口号 重命名 ...

  7. [ABC146F] Sugoroku

    2023-02-27 题目 题目传送门 翻译 翻译 难度&重要性(1~10):5 题目来源 AtCoder 题目算法 贪心 解题思路 对于第 ii 个点,只要到达 \(s_{i+1}\cdot ...

  8. The database operation was expected to affect 1 row(s), but actually affected 0 row(s); 解决乐观并发

    The database operation was expected to affect 1 row(s), but actually affected 0 row(s); 解决乐观并发 1.乐观并 ...

  9. Programming abstractions in C阅读笔记:p127-p129

    <Programming Abstractions In C>学习第51天,p127-p129,总结如下: 一.技术总结 1. string library 掌握常用函数如strlen,s ...

  10. Lazada商品详情(代码封装)以及应用

      编辑切换为居中 Lazada平台的分析可以从以下几个方面入手: 1. 市场分析:对Lazada平台市场进行分析,及时了解市场趋势和变化,调整企业的经营策略.可以监测Lazada平台上商品的销售量. ...