macos sftp有没有支持 ssh跳板机 的 sftp 客户端

Mac OS SSH/SFTP的Python脚本 - 简书
Mac OS SSH/SFTP的Python脚本
以前在windows系统下面使用xshell来管理阿里云上的服务器,winscp来上传网站的资料,由于winscp使用的私钥必须是.ppk格式,而xshell使用普通的私钥,每次都要用putty工具来转换,很麻烦。后来使用xftp来替代winscp,xftp和xshell使用同样的私钥,这套组合在windows平台上面管理服务器非常方便,推荐使用。
然而Mac OS上面,没有这个套工具,由于Terminal可以直接使用sftp和ssh命令,用来管理阿里云服务器也很不错。但是,管理多台服务器非常麻烦,最好脚本统一管理。因此我设计的脚本具有如下功能:
同一个命令可以用于ssh连接或者sftp连接
一个脚本最好能管理所有的服务器
脚本能够展示所有可用的服务器,方便选择
要有良好的帮助信息
最终的命令格式如下:
sshlink -l展示所有可以用的服务器名sshlink -h或者sshlink --help显示帮助信息sshlink -s server_name表示使用ssh协议连接服务器sshlink -f server_name表示使用sftp协议连接服务器
代码如下,注意:代码中隐藏了关键的IP信息,请自行修改:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
作用:'sshlink -[lsfh] severName'命令对服务器进行访问
arg参数如下:
-l: 显示可用的服务器名字
-s: 使用ssh命令进行连接服务器
-f: 使用sftp命令进行连接服务器
-h: 显示帮助信息
--help: 显示帮助信息
import sys
argv = sys.argv
BASE_URL = '/Users/HomePath/.ssh/'
# 存放私钥的路径
serverName = {
'server1': ('ip1', 'server1.key'),
'server2': ('ip2', 'server2.key'),
def sshlink():
if len(argv) == 1:
# 没有参数的时候显示帮助信息
print __doc__
elif argv[1] == '-l':
# 显示所有的可用服务器名
print 'Servers can be used: ', ' '.join(serverName.keys())
elif argv[1] == '-s':
# 使用ssh进行连接
if len(argv) == 3 and argv[2] and argv[2] in serverName:
sshcmd = list()
sshcmd.append('ssh root@' + serverName[argv[2]][0])
sshcmd.append('-i')
sshcmd.append(os.path.join(BASE_URL, serverName[argv[2]][1]))
os.system(' '.join(sshcmd))
print "Need Server Name: ", ' '.join(serverName.keys())
elif argv[1] == '-f':
#使用sftp进行连接
if len(argv) == 3 and argv[2] and argv[2] in serverName:
sftpcmd = list()
sftpcmd.append('sftp -i')
sftpcmd.append(os.path.join(BASE_URL, serverName[argv[2]][1]))
sftpcmd.append('root@' + serverName[argv[2]][0])
os.system(' '.join(sftpcmd))
print "Need Server Name: ", ' '.join(serverName.keys())
elif argv[1] == '--help' or argv[1] == '-h':
print __doc__
print "Servers can be used: ", ' '.join(serverName.keys())
print "Only support -l, -s, -f, --help"
if __name__ == '__main__':
使用sudo ln -s在系统路径中建立一个软连接,并且赋予执行权限sudo chmod 700 sshlink,然后就可以正常使用命令了。如果需要增加服务器,那么就修改该代码中的ServerName字典,然后就能正常使用。
是非成败转头空,青山依旧在,几度夕阳红mac iterm2 2种方式记住ssh登录信息 - 为程序员服务
mac iterm2 2种方式记住ssh登录信息
13030 阅读
工作需要经常ssh到远程服务器,频繁的输入ssh -p
@让人不厌其烦,虽然可以借助zoc来帮助记住登录信息,但是zoc对中文输入不友好让我甚是忧伤,于是尝试用iterm2,但是,有没有方法让iterm2也可以帮我们记住ssh登录信息呢?答案是可以的,这篇文章将介绍2种方式:
第一种方式:自己写脚本
0、编写脚本linux.sh,并保存到一个文件夹下
[code lang="shell"]
#!/usr/bin/expect -f
set user &用户名&
set ip &ip地址&
set password &密码&
set timeout -1
spawn ssh $user@$ip
expect "*assword:*"
send "$password\r"
expect eof
1、在iterm2添加Profile
打开iterm2后,选择自己定义的profile即可。
第二种方式:使用sshpass
0、下载sshpass
1、解压编译安装
[code lang="shell"]
tar zxvf sshpass-1.05.tar.gz
./configure
make install
2、准备密码
随便把密码写到一个新文件里
3、在iterm2添加Profile
commond的值为
[code lang="shell"]
/usr/local/bin/sshpass -f /Users/jakes/.ssh/linux ssh -p 32200 root@10.1.11.121
两种方式比较:
0、第一种方式要求自己会脚本;第二种方式比较傻瓜化一点;
1、第一种方式使用rz sz老是不成功,不知道什么原因;第二种方式则可以。
综上,推荐使用sshpass的方式保存ssh登录信息。
原文地址:, 感谢原作者分享。
您可能感兴趣的代码SSH 协议端口号 22 背后的故事
为什么 SSH[1](安全终端)的端口号是 22 呢,这不是一个巧合,这其中有个我(Tatu Ylonen[2],SSH 协议的设计者)未曾诉说的故事。
将 SSH 协议端口号设为 22 的故事
1995 年春我编写了 SSH 协议的最初版本,那时候 telnet[3]和 FTP[4]正被广泛使用。
当时我设计 SSH 协议想着是为了替代 telnet(端口 23)和 ftp(端口21)两个协议的,而端口 22 是空闲的。我想当然地就选择了夹在 telnet 和 ftp 的端口中间的数字。我觉得端口号虽然是个小事但似乎又存在着某种信念。但我到底要怎么拿到那个端口号呢?我未曾拥有过任何一个端口号,但我却认识几个拥有端口号的人!
在那时取得端口号的事情其实说来挺简单的。毕竟当时的因特网(Internet)并不是很大,是因特网爆炸的早期。端口号分配的活儿是 IANA(Internet Assigned Numbers Authority,互联网数字分配机构)干的。在那时这机构可相当于是因特网先驱 Jon Postel[5]和 Joyce K. Reynolds[6]一般的存在。Jon 参与编写了多项主要的协议标准,例如 IP(RFC 791)、ICMP(RFC 792)和 TCP(RFC 793)等一些你应该早有耳闻的协议。
我可以说是敬畏 Jon 先生的,他参与编写了几乎所有主要的因特网标准文档(Internet RFC)!
1995 年 7 月,就在我发布 ssh-1.0 前,我发送了一封邮件给 IANA:
From ylo Mon Jul 10 11:45:48 +
From: Tatu Ylonen &ylo@cs.hut.fi&
To: Internet Assigned Numbers Authority &iana@isi.edu&
Subject: 请求取得一个端口号
Organization: 芬兰赫尔辛基理工大学
亲爱的机构成员:
我写了个可以在不安全的网络环境中安全地从一台机器登录到另一台机器的程序。它主要是对现有的 telnet 协议以及rlogin 协议的功能性提升和安全性改进。说的具体些,就是可以防御IP、DNS 或路由等欺骗行为。我打算将我的软件免费地发布在因特网上,以得到广泛地使用。
我希望为该软件注册一个特权端口号,要是这个端口号在1 到255 之间就更好了,这样它就可以用在名字服务器的WKS 字段中了。
我在附件中附上了协议标准的草案。这个软件已经在本地运行了几个月了,我已准备在获得端口号后就发布。如果端口号分配一事安排的及时,我希望这周就将要发布的软件准备好。我目前在beta 版测试时使用的端口号是22,如果要是能够分配到这个端口,我就不用做什么更改了(目前这个端口在列表中还是空闲的)。
软件中服务的名称叫`ssh`(系 Secure Shell 的缩写)。
您最真诚的,
Tatu Ylonen &ylo@cs.hut.fi&
(LCTT 译注:DNS 协议中的 WKS 记录类型意即“众所周知的业务描述”,是类似于 A、MX 这样的 DNS 记录类型,用于描述某个 IP 所提供的服务,目前鲜见使用。参见:/cd/E-4077/dnsintro-154/index.html 。)
第二天,我就收到了 Joyce 发来的邮件:
Date: Mon, 10 Jul :33 -0700
From: jkrey@ISI.EDU
To: ylo@cs.hut.fi
Subject: 回复:请求取得一个端口号
Cc: iana@ISI.EDU
我们将端口号22 分配给ssh 服务了,你目前是该服务的主要联系人。
这就搞定了!SSH 的端口正式使用 22!!!
1995 年 7 月 12 日上午 2 点 21 分,我给我在赫尔辛基理工大学的测试者们宣布了 SSH 的最后 beta 版本。当日下午 5 点 23 分,我给测试者们宣布了 ssh-1.0.0 版本。1995 年 7 月 12 日,下午 5 点 51 分,我将一份 SSH(安全终端)的宣告发给了
的邮件列表,此外我还将其发给了一些新闻组、邮件列表和一些在因特网上讨论相关话题的人们。
如何更改 SSH 服务的端口号
SSH 服务器是默认运行在 22 号端口上的。然而,由于某些原因需要,它也可以运行在别的端口上。比如为了方便测试使用,又比如在同一个宿主机上运行多个不同的配置。当然,极少情况下,不使用 root 权限运行它也可以,比如某些必须运行在非特权的端口的情况(端口号大于等于 1024)。
端口号可以在配置文件 /etc/ssh/sshd_config[7]中将 Port 22 更改。也可以使用 -p &port& 选项运行 sshd[8]。SSH 客户端和 sftp[9]程序也可以使用 -p &port& 选项。
配置 SSH 协议穿越防火墙
SSH 是少数通常被许可穿越防火墙的协议之一。通常的做法是不限制出站的 SSH 连接,尤其常见于一些较小的或者比较技术型的组织中,而入站的 SSH 连接通常会限制到一台或者是少数几台服务器上。
出站的 SSH 连接
在防火墙中配置出站的 SSH 连接十分简单。如果完全限制了外发连接,那么只需要创建一个允许 TCP 端口 22 可以外发的规则即可。如果你想限制目标地址,你可以限制该规则仅允许访问你的组织放在云端的外部服务器或保护该云端的跳板服务器[10]即可。
反向通道是有风险的
其实不限制出站的 SSH 连接虽然是可以的,但是是存在风险的,SSH 协议是支持 通道访问[11]的。最初的想法是在外部服务器搭建一个 SSH 服务监听来自各处的连接,将进入的连接转发到组织,并让这个连接可以访问某个内部服务器。
在某些场景下这当然非常的方便。开发者和系统管理员经常使用它打开一个通道以便于他们可以远程访问,比如在家里或者在旅行中使用笔记本电脑等场景。
然而通常来讲这些做法是违背安全策略的,跳过了防火墙管理员和安全团队保护的控制无疑是违背安全策略的,比如这些: PCI[12]、HIPAA[13]、NIST SP 800-53[14]等。它可以被黑客和外国情报机构用来在组织内留下后门。
CryptoAuditor[15]是一款可以控制通道穿过防火墙或者一组云端服务器入口的产品。该款产品可以配合通用 SSH 密钥管理器(Universal SSH Key Manager)[16]来获得对 主机密钥(host keys)[17]的访问,以在启用防火墙并阻挡未授权转发的场景中解密 SSH 会话。
入站的 SSH 访问
对于入站访问而言,这里有几点需要说一下:
配置防火墙,并转发所有去往 22 端口的连接只能流向到一个特定的内部网络 IP 地址或者一个DMZ[18]主机。在该 IP 上运行 CryptoAuditor[19]或者跳板机来控制和审查所有访问该组织的连接。
在防火墙上使用不同的端口访问不同的服务器。
只允许使用 IPsec[20]协议这样的 VPN(虚拟专用网)登录后连接 SSH 服务。
通过 iptables 服务限制 SSH 访问
iptables[21]是一款内建在 Linux 内核的宿主防火墙。通常配置用于保护服务器以防止被访问那些未明确开启的端口。
如果服务器上启用了 iptables,使用下面的命令将可以允许进入的 SSH 访问,当然命令需要以 root 身份运行。
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
如果你想将上述命令创建的规则持久地保存,在某些系统版本中,可使用如下命令:
service iptables save
防火墙开启 SSH 端口可以让我挖隧道去银行
via: /ssh/port
作者:Tatu Ylonen[22]译者:kenxx[23]校对:wxy[24]
本文由 LCTT[25]原创编译,Linux中国[26]荣誉推出
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点是文件传输协议的英文简称,而中文简称为文传协议。用于上的控制文件的双向传输。同时,它也是一个应用程序。基于不同的操作系统有不同的应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在的使用当中,用
filezilla中文版是一个免费开源且
FlashFXP 是一个功能强大而实用
还在为没有自己的 FTP 空间而不便
使用诚龙网维全自动PXE网刻工具进
FTPCE:在手机上运行的FTP服务器
这个FTP服务器是用C语言开发的,
SSH和SFTP客户端SecureCRT+SecureFX 7.1.1.264 黯然过客整合版
下载帮助本站软件均来自互联网, 如有侵犯您的版权, 请与我们联系。
* 为了达到最快的下载速度,推荐使用下载本站软件。
* 请一定升级到最新版才能正常解压本站提供的软件!
* 相关网站事务请留言:
或通知我们!或加我们微信公众号:xz7_cngr
Copyright &
. All Rights Reserved鍗氬?鍒嗙被锛}

我要回帖

更多关于 ssh 自动补全 macos 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信