linux ssh管理客户端,在 Linux 下管理 SSH 连接

工作过程中,往往需要连接到不同的服务器上,有些服务器因为处于特定的集群中,可以方便的通过跳板机跳转过去。而有一些开发机、测试机等零散的服务器就需要凭记忆来记住IP地址。肯定,这种方式非常麻烦,有些客户端可以用来管理 SSH 连接 ,例如Win下的xshell和putty等。

配置 SSH 连接

这里提供一种不需要安装客户端的简单方法,只利用SSH的配置文件(~/.ssh/config)来记录和管理多个 SSH 连接 。关于~/.ssh/config的配置很简单,随便找个手册了解一下就行。 例如,下面定义了连接到 test 这台机器所需的配置:

# Test host

Host test

HostName 10.1.1.1

User admin

一旦在配置文件中写好之后,可以简单地通过"ssh test"来连接到相应的服务器,非常简单。

Host *

ServerAliveInterval 60

ControlMaster auto

ControlPath ~/.ssh/%h-%p-%r

ControlPersist yes

下面介绍两种方法来利用配置文件管理好 SSH 连接。

方法一:Python 脚本实现(不推荐)

在此基础上用Python写个脚本,可以提供一个交互式的界面:

#!/usr/bin/python

# coding=utf-8

import os

import re

ssh_config_file = '~/.ssh/config'

def parse_config():

entry_list = []

entry_name = host_name = user_name = ''

conf = os.path.expanduser(ssh_config_file)

if not os.path.exists(conf):

print 'No such file exists: "%s"!' % conf

return entry_list, 1

fp = open(conf, 'r')

for line in fp:

line = line.strip()

if not line or line.startswith('#'):

continue

if line.startswith('Host '):

if entry_name:

entry_address = '%s@%s' % (user_name, host_name)

entry_list.append((entry_name, entry_address))

entry_name = line.split()[1]

if entry_name == '*':

entry_name = ''

elif line.startswith('HostName '):

host_name = line.split()[1]

elif line.startswith('User '):

user_name = line.split()[1]

if entry_name:

entry_address = '%s@%s' % (user_name, host_name)

entry_list.append((entry_name, entry_address))

fp.close()

return entry_list, 0

def ssh_helper():

entry_id = 0

entry_list, status_code = parse_config()

if not entry_list and status_code == 1:

return

print '''

************** Hello %s, Welcome to use SSH Helper Tool **************

''' % (os.environ['USER'])

print '+-----+------------------------------+------------------------------------------+'

print '| id | name | address |'

print '+-----+------------------------------+------------------------------------------+'

for entry_id, entry in enumerate(entry_list):

entry_name, entry_addr = entry

print '| %-3d | %-28s | %-40s |' % (entry_id, entry_name, entry_addr)

print '+-----+------------------------------+------------------------------------------+'

print '''

Tips: Press a number betwwen 0 and %d to select the host to connect, or "q" \

to quit.''' % entry_id

select = ''

while select != 'q':

select = raw_input('\n# ')

if select == 'q':

break

try:

os.system('ssh %s' % entry_list[int(select)][0])

except (ValueError, IndexError):

print 'You must press a number between 0 and %d' % entry_id

if __name__ == '__main__':

ssh_helper()

方法二:Bash 脚本实现(推荐)

将以下内容添加到~/.bash_profile文件中:

# Auto complete ssh server defined in ~/.ssh/config

#complete -W "$(awk '/^Host/{if ($2!="*") print $2}' ~/.ssh/config)" ssh

# Define ssh alias for server defined in ~/.ssh/config

for host in $(awk '/^Host/{if ($2!="*") print $2}' ~/.ssh/config); do

alias $host="ssh $host"

done

然后 source ~/.bash_profile或者重新登录 shell,直接键入服务器别名,例如test,来ssh到相应的机器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值