V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
agnewee
V2EX  ›  Python

写了个 Mac 上简单的 SSH 连接工具,分享一下

  •  
  •   agnewee · 2018-01-06 17:06:07 +08:00 · 6816 次点击
    这是一个创建于 2273 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为总是用 ssh 连接需要不断的输密码,找过工具,可能是自己姿势不对,觉得不太好使。

    SecureCRT 不知道是我装的不对还是别的什么原因,总是会过一会儿就连接中断。

    所以用 Python 基于 expect 写了个简单的工具。

    atssh

    # 安装
    bash build.sh ~/.zshrc
    
    # 使用
    atssh IP USERNAME PASSWORD PORT
    
    # 首次连接
    atssh 192.168.1.99 root root 22
    
    # 再次连接
    atssh 192.168.1.99
    
    

    atssh

    47 条回复    2018-01-15 08:20:39 +08:00
    qfdk
        1
    qfdk  
       2018-01-06 17:09:57 +08:00 via iPhone
    确定是你姿势不对 其实在 bashrc 或者 zshrc 那边加配置能搞定
    qfdk
        2
    qfdk  
       2018-01-06 17:12:22 +08:00 via iPhone
    断线的问题也可以通过 配置搞定 里面一个发送心跳包的设置 以前也是自己姿势不对……
    clino
        3
    clino  
       2018-01-06 17:17:17 +08:00
    为什么不用 key 验证要用密码验证呢?
    vinsa
        4
    vinsa  
       2018-01-06 17:23:44 +08:00
    key 登录就好了,这需求奇怪的。
    chinvo
        5
    chinvo  
       2018-01-06 17:25:34 +08:00
    用 key 啊大哥
    torbrowserbridge
        6
    torbrowserbridge  
       2018-01-06 17:29:22 +08:00 via Android
    。。。。。
    pdfgo
        7
    pdfgo  
       2018-01-06 17:30:05 +08:00 via Android
    用 key 最好,而且加个 alias 不也能搞定吗
    codeeer
        8
    codeeer  
       2018-01-06 17:31:07 +08:00 via iPhone
    aws 经常不知因为啥操作 key 就不能用了
    xuhaoyangx
        9
    xuhaoyangx  
       2018-01-06 17:31:26 +08:00
    ssh-copy-id
    winglight2016
        10
    winglight2016  
       2018-01-06 17:57:14 +08:00
    alias 是比较常见的做法,一个脚本就能搞定的事情
    likuku
        11
    likuku  
       2018-01-06 18:00:45 +08:00
    @codeeer [aws 经常不知因为啥操作 key 就不能用了], 怎么可能...只用 key 登陆 aws 的路过,前天才登过一次。
    codeeer
        12
    codeeer  
       2018-01-06 18:03:13 +08:00 via iPhone
    @likuku 是啊,一直都是正常的,某一天就不能用了,我也很绝望啊…用 aws 官网终端也登不上
    SimbaPeng
        13
    SimbaPeng  
       2018-01-06 18:04:52 +08:00
    mac 下最好 ssh 连接工具是 Termius
    likuku
        14
    likuku  
       2018-01-06 18:06:16 +08:00   ❤️ 2
    放着 ssh-key 认证不用,这是何苦?你 macOS 哪个版本?

    macos 自己的 key-chain 会在第一次使用 key 登陆时,把 id_rsa/private_key 的 passphrase 给加密保存下来,
    之后只要 macos 通过你自己 mac 的账密登陆,就自动给 private_key 解锁,并加入 ssh-agent,
    这时终端下直接 ssh 登录放过 public-key 的主机,丝般流畅。

    macOS 在 10.12 时更改过 ssh 客户端的默认设定,你要确保你的 ~/.ssh/config 里得有以下:
    ForwardAgent yes
    UseKeychain yes
    AddKeysToAgent yes

    才好使。
    agnewee
        15
    agnewee  
    OP
       2018-01-06 18:31:13 +08:00
    额,那应该是我的姿势不对了,很尴尬…
    SPACELAN
        16
    SPACELAN  
       2018-01-06 18:31:34 +08:00
    ssh-key 啊

    就算有限制不能用 key,也可以配置 ssh-confg,使链接持久化,这样再次登录时也不用输入密码了
    agnewee
        17
    agnewee  
    OP
       2018-01-06 18:32:02 +08:00
    @likuku 我回头试试
    unidentifiedme
        18
    unidentifiedme  
       2018-01-06 18:37:05 +08:00
    用 ssh config 和 key 就搞定的事情,随手找了个链接 http://codelife.me/blog/2012/09/01/ssh-session-profile-management-in-terminal-of-macos-x/
    tulongtou
        19
    tulongtou  
       2018-01-06 18:38:22 +08:00
    @SimbaPeng 不是 iTerm2 么?
    zeyexe
        20
    zeyexe  
       2018-01-06 19:10:33 +08:00
    SecureCRT 有个 Anti-idle
    HuHui
        21
    HuHui  
       2018-01-06 19:11:30 +08:00
    iterm2+sshpass
    zeyexe
        22
    zeyexe  
       2018-01-06 19:11:43 +08:00
    SecureCRT 有个 Anti-idle 的配置,勾选 Send NO-OP 就可以保持连接了。
    sunwei0325
        23
    sunwei0325  
       2018-01-06 19:50:01 +08:00
    试一下 mosh 吧, 你会爱上它的
    HandSonic
        24
    HandSonic  
       2018-01-06 20:00:46 +08:00
    推荐 Termius
    jorneyr
        25
    jorneyr  
       2018-01-06 20:18:24 +08:00
    iTerm + expect 脚本,不让贴连接
    shino996
        26
    shino996  
       2018-01-06 21:21:30 +08:00 via iPad
    @likuku 学到了, 我一直都是直接改 config 的路径…
    SeonMe
        27
    SeonMe  
       2018-01-06 21:32:26 +08:00 via Android
    key 搞定,在 user 目录建一个 .ssh 文件夹(应该都有),再建一个 config 文件 ,里边儿写上 name,host,post 就可以了
    SimbaPeng
        28
    SimbaPeng  
       2018-01-06 23:01:51 +08:00
    @tulongtou iTerm2 只是个终端阿,又不是 ssh 管理连接工具
    tracyone
        29
    tracyone  
       2018-01-06 23:26:03 +08:00
    连 key 都不知道,写出了 ssh 连接工具,只能 hehe 了。
    q397064399
        30
    q397064399  
       2018-01-07 09:22:36 +08:00
    @tracyone #29 谁不是小白过来的。
    joysir
        31
    joysir  
       2018-01-07 10:23:57 +08:00
    用 key,配置 config,直接用别名登录,都不需要记这些。
    redapple0204
        32
    redapple0204  
       2018-01-07 12:15:31 +08:00
    貌似深度终端有这个工具来着。。
    ranye
        33
    ranye  
       2018-01-07 13:44:37 +08:00   ❤️ 1
    用 key 登入,然后如下设置下 .ssh/config 就行了

    Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa

    Host [whatever]
    HostName [IP address]
    Port 12345
    User root
    ServerAliveInterval 10
    Kokororin
        34
    Kokororin  
       2018-01-07 15:05:59 +08:00
    sshpass
    2owe
        35
    2owe  
       2018-01-07 17:00:49 +08:00
    ssh 可以加一个选项 -o,表示配置自动活跃,令 SSH 连接不会因为长时间无输入自动断掉。
    比如:

    ```
    ssh user@host -o ServerAliveInterval=60
    ```

    鉴于折腾可能是无止境的,老夫这里有一份折腾小册子,少侠可以拿去作为参考:

    『分享』打通终端到服务器,我推荐它们 https://hit1024.com/post/2016-10-30

    内容是关于这些工具的使用和简单配置:iTerm,Zsh,mosh,SSH public-key authentication,Tmux。
    labulaka
        36
    labulaka  
       2018-01-07 22:24:43 +08:00
    SecureCRT 里面有一项设置 隔多少秒发数据包给服务器 这样就不会断开了
    wizardoz
        37
    wizardoz  
       2018-01-08 09:58:01 +08:00
    ssh-copy-id 正解,然后配合上.ssh/config 配置。
    详情:man ssh_config
    agnewee
        38
    agnewee  
    OP
       2018-01-08 10:40:43 +08:00
    @zeyexe @labulaka 感谢,SecureCRT 找到这个设置了。
    agnewee
        39
    agnewee  
    OP
       2018-01-08 10:42:15 +08:00
    感谢各位大佬,通过 key 确实是一种比较方便的方式。
    pangliang
        40
    pangliang  
       2018-01-08 11:37:49 +08:00
    ssh_config + ControlPath 也可以的
    likuku
        41
    likuku  
       2018-01-08 23:39:47 +08:00
    ~/.ssh/config 别名 + bash 的 alias,不要太方便...

    我 config 里定义有使用特定账户,特定端口 的 树莓派,命名为 pi

    ~/.bash_profile 里再

    alias pi='ssh pi'

    如此,开终端直接敲 pi 就登入这台树莓派。


    mac 上用 SecureCRT 也是挺稀罕..
    likuku
        42
    likuku  
       2018-01-08 23:47:16 +08:00
    @2owe iTerm 也支持本地“花式分屏”:CMD + D (左右分) , CMD + Shift + D (上下分)
    likuku
        43
    likuku  
       2018-01-08 23:50:49 +08:00
    @codeeer 那就真比较奇怪了,服务器被黑,key 被改掉 /删除了?后来怎样了?找过 aws 客服?
    codeeer
        44
    codeeer  
       2018-01-09 00:09:22 +08:00 via iPhone
    @likuku 新开一台服务器,同步代码系统,切换域名哈哈😄客服太慢了。不知是不是更新的事,只在 aws 出现过这样情况,原因也不好排查,毕竟连不上
    Linxing
        45
    Linxing  
       2018-01-09 10:51:20 +08:00
    ssh -i
    leoliuliu
        46
    leoliuliu  
       2018-01-09 11:30:38 +08:00
    vssh 没有什么是人民币做不了的事情
    kios
        47
    kios  
       2018-01-15 08:20:39 +08:00 via iPhone
    我都是在 zsh 配置好了的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1130 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:44 · PVG 02:44 · LAX 11:44 · JFK 14:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.