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

转载来自:http://dhq.me/use-ssh-config-manage-ssh-session

通常利用 ssh 连接远程服务器,一般都要输入以下类似命令:


1

ssh [email protected]hostname -p port

如果拥有多个 ssh 账号,特别是像我这种喜欢在终端里直接 ssh 登陆,不用 PuTTYSecureCRT之类的 ssh 客户端的,要记住每个ssh 账号的参数,那是多么蛋疼的事情。

还好,ssh 提供一种优雅且灵活的方式来解决这个问题,就是利用 ssh 的用户配置文件 config 管理 ssh 会话。ssh 的用户配置文件是放在当前用户根目录下的 .ssh 文件夹里(~/.ssh/config,不存在则新创建一个),其配置写法如下:


1

2

3

4

5

Host    别名

    HostName        主机名

    Port            端口

    User            用户名

    IdentityFile    密钥文件的路径

有了这些配置,就可以这样用 ssh 登陆服务器了:


1

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 获得


1

dig shell.cjb.net

使用密钥的好处就是省去每次 ssh 登陆服务器时都要输入登陆密码的操作,这里使用 ssh-keygen 生成 ssh 密钥(以下操作是在 ~/.ssh/ 目录里执行):


1

ssh-keygen -t rsa

这里使用 rsa 的加密方式(另外一种加密方式是 dsa),中间会询问密钥生成的位置,这里只输入 cjb,在当前位置生成名为 cjb 的密钥,接着会询问是否要设置一个密码(passphrase),这里留空,直接按回车就行(本来就不想登陆输入密码了...),最后,会在当前目录路径下生成一个名为 cjb 的私钥,一个名为cjb.pub 的公钥。

把公钥 cjb.pub 上传到远程 cjb 服务器的 ~/.ssh/ 目录下:


1

scp ./cjb.pub [email protected]:~/.ssh/

上传完后,把公钥 cjb.pub 的内容复制到 authorized_keys 文件里(不存在则新创建一个):


1

cat cjb.pub >> authorized_keys

以 ssh publickey 的形式访问,对当前用户根目录下的 .ssh 文件夹里的目录文件是要有一定的权限要求,之前遇到过 ssh publickey 配置好了,不过用 publickey 登陆验证时则无效。所以,最好设下 .ssh 目录权限为 700,authorized_keys 权限为 600:


1

2

chmod 700 ~/.ssh/

chmod 600 authorized_keys

当然,用密钥的方式连接服务器是需要服务器上的 ssh 支持的,需要 ssh 的配置文件(默认是在 etc/ssh/sshd_config)里的 PubkeyAuthentication 设置成 yes。如果要改登陆的端口,直接把 Port 改成你想要的端口值就行。修改完后重启下 ssh ,配置就生效:


1

/etc/init.d/ssh restart

还好,CJB 提供的免费 ssh 支持密钥访问。

这样,连接 cjb 的密钥配置完成,本地 ssh 用户配置文件 config 里的 IdentityFile 值写为私钥 cjb 的文件路径 "~/.ssh/cjb" 就行,最后,本地 ssh 用户配置文件 config 的内容如下:


1

2

3

4

5

Host        cjb

    HostName        216.194.70.6

    Port            22

    User            user

    IdentityFile    ~/.ssh/cjb

配置完成后,就可以在终端直接输入 "ssh cjb" 畅通无阻地连上远程的 cjb 服务器上了。

如果有多个 ssh 账号需要配置,在 config 文件里隔行分开写就行,例如:


1

2

3

4

5

6

7

8

9

10

Host        cjb

    HostName        216.194.70.6

    Port            22

    User            user

    IdentityFile    ~/.ssh/cjb

Host        alias

    HostName    hostname

    Port        port

    User        user

嘿嘿,如果你也用 ssh 作 socks5 代理FQ,以后不用这样写了:


1

ssh -qTfnNC -D 12345 [email protected] -p 22

可以省去 user 后面的,直接写成这样:


1

ssh cjb -qTfnNC -D 12345

上面的 scp 传送也可以简写成这样:


1

scp ./cjb.pub cjb:~/.ssh/

执行远程 ssh 命令:


1

ssh cjb "ls ~"

打包一个文件(假设当前目录有个名为 test 的文件夹),接着上传到远程服务器,最后解压文件


1

tar -zcvf - ./test/ ssh [email protected] ‘cd /user/; tar xvfz -‘

时间: 2024-10-11 17:46:19

利用 ssh 的用户配置文件 config 管理 ssh 会话的相关文章

使用ssh config配置文件来管理ssh连接

我本人其实及其烦使用配置文件这种东西,有时候看到巨大又复杂的配置文件,甚至复杂过代码的时候,总感觉设计配置文件的人有些本末倒置. 但是ssh这个配置文件真的非常简单好用,让我稍微体验了一次配置文件使用的快感. 在使用ssh confg之前我大概是这样设置和管理自己的ssh连接的. 首先条线一个集中的地方,比如我自己在桌面上创建一个sa的文件夹,然后在这个文件夹里面放上自己经常连接的服务器的连接命令做成一个脚本类似名字叫 ssh-redis #!/bin/sh ssh [email protect

Linux SSH服务端配置文件设置

一 SSH概述 SSH 由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台.SSH在正确使用时可弥补网络中的漏洞.SSH客户端适用于多种平台.几乎所有UNIX平台-包括HP-UX.Linux.AIX.Solaris.Digital UN

linux学习-----用户,用户组管理 网络设置 ssh服务

Linux自有服务 不需要用户独立去安装软件的服务 而是当我们系统安装好之后就可以直接使用的服务(内置) 1.运行模式(运行级别) 在linux中 存在一个进程 init(initialize,初始化),进程id为1. 该进程存在一个对应的配置文件:inittab(系统运行级别配置文件 位置/etc/inittab) "#"在配置文件中表示注释 7种运行级别: 0- 表示关机的级别(不要将默认的运行级别设置成0) 1- 单用户模式 2- 多用户模式,不带NFS(网络文件系统) 3- 完

Linux下的ssh实验环境搭建与管理

Linux下的ssh实验环境搭建与管理 实验环境 服务端:xuegod-63   IP:192.168.1.63 客户端:xuegod-64   IP:192.168.1.64 客户端普通用户:ceshi  密码:123456 安装好扫描软件rpm -ivh /mnt/Packages/nmap-5.21-4.el6.x86_64.rpm 实验目标 1:SSHD服务介绍 2:SSHD服务安装配置 3:两Linux服务器之间数据拷贝 4:SSHD服务作用: 实验步骤 1:搭建环境 1):网桥模式

linux用户配置文件passwd和密码配置文件shadow,用户管理,组管理

一.linux和windows互传文件 1.安装支持包:lrzsz yum -y install   lrzsz putty工具 不支持lrzsz 2.rz windows文件fail2ban-0.8.14.tar.gz 到linux 当前目录 3.sz baidu.png 传输文件从linux 到 windows 二. 用户配置文件和密码配置文件 1.用户配置文件 ls /etc/passwd [[email protected]_46_188_centos ~]# cat /etc/pass

ssh 配置文件讲解大全 ssh调试模式 sftp scp strace进行调试

ssh 配置文件讲解大全  ssh调试模式  sftp scp strace进行调试 http://blog.chinaunix.net/uid-16728139-id-3265394.html 最近在研究openssh的源代码,不得不折服它代码的精炼和彪悍,即便搞清楚了其架构和思路之后,愣是到头来愣是发现,其实这个小东西还是有很多不为人知却又是研究代码不得不了解的知识,偶然发现如此强悍的介绍, 利索当然地笑纳一下. 一)客户端与服务端的通讯认证流程: 第一阶段: 双方协商SSH版本号和协议,协

使用数据库统一管理ssh登陆用户密钥信息

使用数据库统一管理ssh登陆用户密钥信息 需求是由一个开发部门提出的,他们需要在他们的测试服务器上开放root权限给所有的开发人员,同时要给每个开发人员配置无密码登录,由于使用ssh默认的认证文件存储公钥不方便人员信息的管理(例如一个人离职后不方便在大量的key中找到他的key,且需要在大量的服务器上全部删除). 基于上述需求,我们决定将所有人员的key和其对应的fingerprint保存在数据库中,而且每个fingerprint都对应一个真实用户名,在用户登录的时候,虽然都是使用root用户登

SSH远程登录配置文件sshd_config详解

SSH由客户端和服务端的软件组成,在客户端可以使用的软件有SecureCRT.putty.Xshell等,而在服务器端运行的是一个sshd的服务,通过使用SSH,可以把所有传输的数据进行加密,而且也能够防止dns和IP欺骗,此外,SSH传输的数据是经过压缩的,可以加快传输速度 其服务器端的配置文件为/etc/ssh/sshd_config [[email protected] ~]# cat /etc/ssh/sshd_config#       $OpenBSD: sshd_config,v

Linux/Windows 配置config 使用ssh连接

Linux 产看本地是否有ssh 公私钥 1 cd ~/.ssh 2 ls -a 有的话继续(没有 ssh-keygen 生成) 将公钥内容复制到要连接的服务器用户下 方法一 ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] # | | | | # ssh命令 本机公钥的地址 服务器用户 服务器IP地址 方法二 登录到服务器,直接将本机的公钥复制到root下authorized_keys(我这里用的是root用户) 服务器重点 给.ss