设置ssh快捷连接

在Windows中,常用SecureCrt工具管理常用的ssh链接,为了在OSX或Linux中方便地使用ssh,可以用以下方式进行管理

基本设置

在Client这端,使用

ssh-keygen -t rsa
创建相应的密钥对
比如

ssh-keygen -t rsa
vmcentos7
# 提示输入密钥时,选择空,即直接回车确认

配置服务端

将生成的 vmcentos7.pub 的内容复制到 Server 端 ~/.ssh/authorized_keys 文件中(如果没有,就创建一个)
并确认
~/.ssh 目录的访问权限为700
~/.ssh/authorized_keys 文件的访问权限为 600
然后在Client这端的 .ssh 目录的 config 文件中,添加以下内容

Host vmcentos7
     HostName 10.211.55.13
     User root
     Port 22
     IdentityFile ~/.ssh/vmcentos7

使用方法

然后在Client端就可以通过

ssh vmcentos7

TIPS: 这里的 vmcentos7 不需要去 /etc/hosts 中进行域名绑定

增强使用

直接连接到 Server 端了
附上一个读取 config 配置,然后通过菜单选择连接ssh的小脚本

#!/usr/bin/python
#-*- coding:utf-8 -*-  

import sys,os
import re

# 默认的ssh服务器配置
cfg = "/Users/robert/.ssh/config"

# 读取并加载配置
def loadConfig ( cfg ):
	f = open(cfg)
	lastinx = 0
	inx = 1
	list = []
	for line in f:
		if lastinx != inx :
			item = {'inx':0,'name':'','host':''}
			lastinx = inx
		item['inx'] = inx
		match1 = re.search('^Host\s(.+)\n$', line)
		if match1:
			item['name'] = match1.group(1)
		match2 = re.search('^\s*HostName\s(.+)\n$', line)
		if match2:
			item['host'] = match2.group(1)
			list.append(item)
			inx = inx + 1
	f.close()
	return list

# 显示菜单
def showRemotes( list ):
	os.system('clear')
	print u'==== Total %d Remotes ===\n'%len(list)
	inx = 1
	for i in list:
		print u'%(inx)d - %(name)s(%(host)s)'%i
	print u'%(inx)d - %(name)s(%(host)s)'%{'inx':0,'name':'Exit','host':'Exit Menu'}
	print u'\n'
	choice = raw_input('选择要链接的服务器: ') 
	return choice

def main():
	list = loadConfig( cfg )
	total = len(list)
	while True:
		idx = showRemotes(list)
		if idx.isdigit():
			idx = int(idx)
			if idx == 0:
				print u'退出程序'
				sys.exit(0)
			elif idx < = total :
				item = list[idx-1]
				connectRemote (item)

def connectRemote ( item ):
	cmdstr = u'ssh %(name)s'%item
	print item
	print cmdstr
	os.system(cmdstr)

if __name__ == "__main__":
	main()

Reference:

  1. 利用 ssh 的用户配置文件 config 管理 ssh 会话
  2. python 写个简单TUI日记本
赞赏