assh

2025-12-11 0 851

assh

概述

一个透明的包装器,为SSH增加了对正则支持,别名网关动态主机graphvizjson输出YAML配置等的支持。

libsshassh作为代理人;这意味着它与:

  • SSH
  • SCP
  • rsync
  • git
  • 桌面应用程序取决于lib-sshssh (即,塔,atom.io,SSH隧道经理)

有关具体示例,请参见第三方集成

特征

配置功能

  • 正则支持
  • 别名gate – > gate.domain.tld
  • 网关– >透明的SSH连接链
  • 包括:在多个文件中的拆分配置
  • 本地命令执行:最后是remoteCommand的逆转
  • 模板:相当于主机,但您无法直接连接到模板,非常适合继承
  • 继承:从主机或模板中制作主机继承
  • 可变扩展:从环境中解析变量
  • 智能proxyCommand :使用netcatsocat作为默认后备时,RAW TCP连接
  • 费率限制:配置每主机或全球利率限制
  • JSON输出
  • GraphViz :主机的GraphViz重复

使用命令行的网关

assh可以将ProxyCommand与Openssh透明的NetCat功能一起使用,也可以使用扩展配置的痛苦。

使用hostb作为网关连接到hosta

流程图 
    方向tb

    是的[你]
    一个[hosta]
    b [hostb]
    FW((防火墙))

    样式FW填充:#F00,颜色:#FFF

    y == x fw
    fw .-> a
    
    Y-> b
    b-> a

加载中

$ ssh hosta/hostb
user@hosta $

相当于ssh -o ProxyCommand=\"ssh hostb nc %h %p\" hosta


使用hosta作为网关连接到hostb ,使用hostc作为网关。

流程图 
    方向tb

    是的[你]
    一个[hosta]
    b [hostb]
    C [hostc]
    FW((防火墙))

    样式FW填充:#F00,颜色:#FFF

    y == x fw
    FW ..-> a
    
    Y-> c
    C-> b
    b-> a

加载中

$ ssh hosta/hostb/hostc
user@hosta $

等效于ssh -o ProxyCommand=\"ssh -o ProxyCommand=\'ssh hostc nc %h %p\' hostb nc %h %p\" hosta

使用配置文件中的网关

您可以定义Openssh的“带有NetCat的ProxyCommand”功能,具有简单的语法,更高级的工作流和独特的后备功能。

让我们考虑以下assh .yml文件

 hosts :
  hosta :
    Hostname : 1.2.3.4

  hostb :
    Hostname : 5.6.7.8
    Gateways : hosta

  hostc :
    Hostname : 9.10.11.12
    Gateways : hostb

  hostd :
    Hostname : 13.14.15.16
    GatewayConnectTimeout : 2
    Gateways :
    - direct
    - hosta
  • ssh hosta > ssh 1.2.3.4
  • ssh hostb b-> ssh -o ProxyCommand=\"ssh hostb nc %h %p\" hosta
  • ssh hostc > ssh -o ProxyCommand=\"ssh -o ProxyCommand=\'ssh hostc nc %h %p\' hostb nc %h %p\" hosta
  • ssh hostd – >
    • assh将尝试进入ssh 13.14.15.16
    • 然后,在ssh -o ProxyCommand=\"ssh hostd nc %h %p\" hosta
    • 此方法使您可以在可能的情况下具有最佳的性能,但是如果您不在公司之外,请确保您的命令可以正常工作

引擎盖功能下

  • 在需要时自动再生~/.ssh/config文件
  • 检查父进程确定日志级别(如果使用ssh -vvassh将在调试模式下自动运行)
  • 自动创建ControlPath目录,因此您可以在ControlPath选项中使用SLASHES ,可以使用ControlMasterMkdir: true配置。

钩子

事件

beforeconnect

assh试图连接到远程SSH端口之前, BeforeConnect被称为。

注意:每个SSH连接将调用BeforeConnect ;如果您使用多个网关,则将为每个网关调用,直到一个人成功连接。


Golang模板变量的示例:

 // Host: http://god*o*c.org*/moul.io/assh/pkg/config/#Host
{{. Host . Name }}                                  //  localhost
{{. Host . HostName }}                              //  127.0.0.1
{{. Host . Port }}                                  //  22
{{. Host . User }}                                  //  moul
{{. Host . Prototype }}                             //  moul@127.0.0.1:22
{{. Host }}                                       //  {\"HostName\":\"localhost\",\"Port\":22\",\"User\":\"moul\",\"ControlPersist\":\"yes\",...}
{{ printf \"%s:%s\" . Host . HostName . Host . Port }}    //  localhost:22 
连接

一旦assh连接到远程SSH端口, OnConnect就会立即调用。

注意: OnConnect不知道身份验证过程,并且将始终提出。


Golang模板变量的示例:

 // Host: http://god*o*c.org*/moul.io/assh/pkg/config/#Host
{{. Host . Name }}                                  //  localhost
{{. Host . HostName }}                              //  127.0.0.1
{{. Host . Port }}                                  //  22
{{. Host . User }}                                  //  moul
{{. Host . Prototype }}                             //  moul@127.0.0.1:22
{{. Host }}                                       //  {\"HostName\":\"localhost\",\"Port\":22\",\"User\":\"moul\",\"ControlPersist\":\"yes\",...}
{{ printf \"%s:%s\" . Host . HostName . Host . Port }}    //  localhost:22

// Stats: http://godoc.o***rg/moul.io/assh/pkg/commands/#ConnectionStats
{{. Stats . ConnectedAt }}                           //  2016-07-20 11:19:23.467900594 +0200 CEST 
OnConnectError

assh未能打开新的TCP连接时,请使用OnConnectError


Golang模板变量的示例:

 // Host: http://god*o*c.org*/moul.io/assh/pkg/config/#Host
{{. Host . Name }}                                  //  localhost
{{. Host . HostName }}                              //  127.0.0.1
{{. Host . Port }}                                  //  22
{{. Host . User }}                                  //  moul
{{. Host . Prototype }}                             //  moul@127.0.0.1:22
{{. Host }}                                       //  {\"HostName\":\"localhost\",\"Port\":22\",\"User\":\"moul\",\"ControlPersist\":\"yes\",...}
{{ printf \"%s:%s\" . Host . HostName . Host . Port }}    //  localhost:22

// Error
{{. Error }}                                      //  dial tcp: lookup localhost: no such host 
OnDisconnect

当assh插座关闭时, OnDisconnect被称为。

警告:如果关闭SSH连接时看不到通知,则可能配置了ControlMasterOnDisconnectssh程序没有链接,而是与其插座相关联,即使退出ssh程序也可能会活着。


Golang模板变量的示例:

 // Host: http://god*o*c.org*/moul.io/assh/pkg/config/#Host
{{. Host . Name }}                                  //  localhost
{{. Host . HostName }}                              //  127.0.0.1
{{. Host . Port }}                                  //  22
{{. Host . User }}                                  //  moul
{{. Host . Prototype }}                             //  moul@127.0.0.1:22
{{. Host }}                                       //  {\"HostName\":\"localhost\",\"Port\":22\",\"User\":\"moul\",\"ControlPersist\":\"yes\",...}
{{ printf \"%s:%s\" . Host . HostName . Host . Port }}    //  localhost:22

// Stats: http://godoc.o***rg/moul.io/assh/pkg/commands/#ConnectionStats
{{. Stats . ConnectedAt }}                           //  2016-07-20 11:19:23.467900594 +0200 CEST
{{. Stats . WrittenBytes }}                          //  3613
{{. Stats . WrittenBytesHuman }}                     //  3.6kb
{{. Stats . DisconnectAt }}                          //  2016-07-20 11:19:29,520515792 +0200 CEST
{{. Stats . ConnectionDuration }}                    //  6.052615198s
{{. Stats . ConnectionDurationHuman }}               //  6s
{{. Stats . AverageSpeed }}                          //  596.933bps
{{. Stats . AverageSpeedHuman }}                     //  3.4kb/s 
beforeconfigwrite

assh重写~/.ssh/config文件之前, BeforeConfigWrite被调用。


Golang模板变量的示例:

{{. SSHConfigPath }}                               // ~/.ssh/config 

钩司机

执行驱动程序

Exec驱动程序使用Golang的模板系统执行shell命令

用法: exec <binary> [args...]

 defaults :
  Hooks :
    OnConnect : exec echo \'{{.Host}}\' | jq .
# executes: `echo \'{\"HostName\":\"localhost\",\"Port\":\"22\",\"User\":\"moul\",\"ControlPersist\":\"yes\",...}\' | jq .
# which results in printing a pretty JSON of the host
# {
#   \"HostName\": \"localhost\",
#   \"Port\": \"22\",
#   \"User\": \"moul\",
#   \"ControlPersist\": \"yes\",
#   ...
# } 

assh@42.am
# send an email with the connection prototype\”>

 defaults :
  Hooks :
    OnConnect : exec echo \'New SSH connection to {{.Host.Prototype}}.\' | mail -s \"SSH connection journal\" m+ assh @42.am
# send an email with the connection prototype 
 defaults :
  Hooks :
    BeforeConfigWrite : exec cp {{.SSHConfigPath}} {{.SSHConfigPath}}.backup
# make a copy of ~/.ssh/config before being rewritten 
 defaults :
  Hooks :
    AfterConfigWrite : \' exec echo \"# date: `date`\" >> {{.SSHConfigPath}} \'
# Append a comment with the compilation date to the generated ~/.ssh/config file 
 defaults :
  Hooks :
  AfterConfigWrite : \' exec cat /path/to/my/provider/generated/.ssh/config >> {{.SSHConfigPath}} \'
# Append another .ssh/config file to the generated .ssh/config file

exec命令正在阻止,计划了一个新的背景任务驱动程序。目前,您可以在这样的背景中运行一份工作:

 defaults :
  Hooks :
    OnConnect :
    - exec sleep 60 &
# execute the `sleep 60` command in background (non-blocking)
# if you quit your ssh connection, the process will continue in background. 
写驱动程序

写驱动程序使用Golang的模板系统来写入数据

用法: write <line:string...>

 defaults :
  Hooks :
    OnConnect :
    - write New SSH connection to {{.Host.Prototype}}.
# writes: \"New SSH connection to moul@127.0.0.1:22.\" on the terminal on connection 
 defaults :
  Hooks :
    OnDisconnect :
    - \" write SSH connection to {{.Host.Name}} closed, {{ .Stats.WrittenBytes }} bytes written in {{ .Stats.ConnectionDuration }} ({{ .Stats.AverageSpeed }}) \"
# writes: SSH connection to localhost closed, 40 bytes written. 
通知驱动程序

通知驱动程序使用Golang的模板系统打开桌面通知。

  • Mac OS X :内置支持
  • Linux :取决于GNOTIFIER
  • Windows :不支持
  • BSD :不支持

用法: notify <line:string...>

 defaults :
  Hooks :
    OnConnect : notify New SSH connection to {{.Host.Prototype}}. 
 defaults :
  Hooks :
    OnDisconnect :
    - \" notify SSH connection to {{.Host.Name}} closed, {{ .Stats.WrittenBytes }} bytes written in {{ .Stats.ConnectionDuration }} ({{ .Stats.AverageSpeed }}) \" 

配置

assh现在管理~/.ssh/config文件,请注意备份~/.ssh/config文件。

~/.ssh/ assh .yml是一个包含:

  • 一个hosts字典,包含多个主机定义
  • 一个包含全局标志defaults部分
  • 一个includes包含其他配置文件路径的部分

assh`
– \’exec cat ~/.ssh/my-heroku-generated-config >> {{.SSHConfigPath}}\’

# Alert me with a Desktop notification
– notify \”{{.SSHConfigPath}} has been rewritten\”

OnConnect:
# Log internal information to a file
– exec printf \'{{.}}\’ | jq . >> ~/.ssh/last_connected_host.txt

# Alert me with a Desktop notification
– notify New SSH connection to {{.Host.Prototype}} at {{.Stats.ConnectedAt}}

# Write the host prototype to the terminal stderr
– write New SSH connection to {{.Host.Prototype}}

OnDisconnect:
# write on terminal and in a Desktop notification some statistics about the finished connection
– \”write SSH connection to {{.Host.HostName}} closed, {{.Stats.WrittenBytes }} bytes written in {{.Stats.ConnectionDuration}} ({{.Stats.AverageSpeed}}bps)\”
– \”notify SSH connection to {{.Host.HostName}} closed, {{.Stats.WrittenBytes }} bytes written in {{.Stats.ConnectionDuration}} ({{.Stats.AverageSpeed}}bps)\”

includes:
– ~/.ssh/ assh .d/*.yml
– /etc/ assh .yml
– $ENV_VAR/blah-blah-*/*.yml

assh BinaryPath: ~/bin/ assh # optionally set the path of assh \”>

 hosts :

  homer :
    # ssh homer ->  ssh 1.2.3.4 -p 2222 -u robert
    Hostname : 1.2.3.4
    User : robert
    Port : 2222

  bart :
    # ssh bart ->   ssh 5.6.7.8 -u bart           <- direct access
    #            or ssh 5.6.7.8/homer -u bart     <- using homer as a gateway
    Hostname : 5.6.7.8
    User : bart
    Gateways :
    - direct                   # tries a direct access first
    - homer                    # fallback on homer gateway

  maggie :
    # ssh maggie ->   ssh 5.6.7.8 -u maggie       <- direct access
    #              or ssh 5.6.7.8/homer -u maggie   <- using homer as a gateway
    User : maggie
    Inherits : bart             # inherits rules from \"bart\"

  bart-access :
    # ssh bart-access ->  ssh home.simpson.springfield.us -u bart
    Inherits :
    - bart-template
    - simpson-template

  lisa-access :
    # ssh lisa-access ->  ssh home.simpson.springfield.us -u lisa
    Inherits :
    - lisa-template
    - simpson-template

  marvin :
    # ssh marvin    -> ssh marvin    -p 23
    # ssh sad-robot -> ssh sad-robot -p 23
    # ssh bighead   -> ssh bighead   -p 23
    # aliases inherit everything from marvin, except hostname
    Port : 23
    Aliases :
    - sad-robot
    - bighead

  dolphin :
    # ssh dolphin   -> ssh dolphin -p 24
    # ssh ecco      -> ssh dolphin -p 24
    # same as above, but with fixed hostname
    Port : 24
    Hostname : dolphin
    Aliases : ecco
    RateLimit : 10M # 10Mbytes/second rate limiting

  schooltemplate :
    User : student
    IdentityFile : ~/.ssh/school-rsa
    ForwardX11 : yes

  schoolgw :
    # ssh school ->   ssh gw.school.com -l student -o ForwardX11=no -i ~/.ssh/school-rsa
    Hostname : gw.school.com
    ForwardX11 : no
    Inherits : schooltemplate

  \" expanded-host[0-7]* \" :
    # ssh somehost2042 ->       ssh somehost2042.some.zone
    Hostname : \" %h.some.zone \"

  vm-*.school.com :
    # ssh vm-42.school.com ->   ssh vm-42.school.com/gw.school.com -l student -o ForwardX11=yes -i ~/.ssh/school-rsa
    Gateways : schoolgw
    Inherits : schooltemplate
    # do not automatically create `ControlPath` -> may result in error
    ControlMasterMkdir : true

  \" *.shortcut1 \" :
    ResolveCommand : /bin/sh -c \"echo %h | sed s/.shortcut1/.my-long-domain-name.com/\"

  \" *.shortcut2 \" :
    ResolveCommand : /bin/sh -c \"echo $(echo %h | sed s/.shortcut2//).my-other-long-domain-name.com\"

  \" *.scw \" :
    # ssh toto.scw -> 1. dynamically resolves the IP address
    #                 2. ssh {resolved ip address} -u root -p 22 -o UserKnownHostsFile=null -o StrictHostKeyChecking=no
    # requires github.com/scaleway/scaleway-cli
    ResolveCommand : /bin/sh -c \"scw inspect -f {{.PublicAddress.IP}} server:$(echo %h | sed s/.scw//)\"
    User : root
    Port : 22
    UserKnownHostsFile : /dev/null
    StrictHostKeyChecking : no

  my-env-host :
    User : user-$USER
    Hostname : ${HOSTNAME}${HOSTNAME_SUFFIX}

templates :
  # Templates are similar to Hosts; you can inherit from them
  # but you cannot ssh to a template
  bart-template :
    User : bart
  lisa-template :
    User : lisa
  simpson-template :
    Host : home.simpson.springfield.us

defaults :
  # Defaults are applied to each hosts
  ControlMaster : auto
  ControlPath : ~/tmp/.ssh/cm/%h-%p-%r.sock
  ControlPersist : yes
  Port : 22
  User : bob
  Hooks :
    # Automatically backup ~/.ssh/config
    BeforeConfigWrite :
      - \' exec set -x; cp {{.SSHConfigPath}} {{.SSHConfigPath}}.bkp \'

    AfterConfigWrite :
      # Concat another `ssh_config` file with the one just generated by ` assh `
      - \' exec cat ~/.ssh/my-heroku-generated-config >> {{.SSHConfigPath}} \'

      # Alert me with a Desktop notification
      - notify \"{{.SSHConfigPath}} has been rewritten\"

    OnConnect :
      # Log internal information to a file
      - exec printf \'{{.}}\' | jq . >> ~/.ssh/last_connected_host.txt

      # Alert me with a Desktop notification
      - notify New SSH connection to {{.Host.Prototype}} at {{.Stats.ConnectedAt}}

      # Write the host prototype to the terminal stderr
      - write New SSH connection to {{.Host.Prototype}}

    OnDisconnect :
      # write on terminal and in a Desktop notification some statistics about the finished connection
      - \" write  SSH connection to {{.Host.HostName}} closed, {{.Stats.WrittenBytes }} bytes written in {{.Stats.ConnectionDuration}} ({{.Stats.AverageSpeed}}bps) \"
      - \" notify SSH connection to {{.Host.HostName}} closed, {{.Stats.WrittenBytes }} bytes written in {{.Stats.ConnectionDuration}} ({{.Stats.AverageSpeed}}bps) \"

includes :
- ~/.ssh/ assh .d/*.yml
- /etc/ assh .yml
- $ENV_VAR/blah-blah-*/*.yml

assh BinaryPath : ~/bin/ assh  # optionally set the path of assh

为了进一步的启发,这些assh .yml在公共GitHub项目上的文件可以教育您如何使用assh

用法

assh

assh – advanced ssh config

USAGE:
assh [global options] command [command options] [arguments…]

VERSION:
2.8.0 (HEAD)

AUTHOR(S):
Manfred Touron <https://gi*thu**b.com/moul/assh>

COMMANDS:
ping Send packets to the SSH server and display statistics
info Display system-wide information
config Manage ssh and assh configuration
sockets Manage control sockets
help, h Shows a list of commands or help for one command

GLOBAL OPTIONS:
–config value, -c value Location of config file (default: \”~/.ssh/ assh .yml\”) [$ assh _CONFIG]
–debug, -D Enable debug mode [$ assh _DEBUG]
–verbose, -V Enable verbose mode
–help, -h show help
–version, -v print the version\”>

 NAME:
   assh - advanced ssh config

USAGE:
   assh [global options] command [command options] [arguments...]

VERSION:
2.8.0 (HEAD)

AUTHOR(S):
   Manfred Touron <https://gi*thu**b.com/moul/assh>

COMMANDS:
   ping          Send packets to the SSH server and display statistics
   info          Display system-wide information
   config        Manage ssh and assh configuration
   sockets       Manage control sockets
   help, h       Shows a list of commands or help for one command

GLOBAL OPTIONS:
  --config value, -c value       Location of config file (default: \"~/.ssh/ assh .yml\") [$ assh _CONFIG]
  --debug, -D                    Enable debug mode [$ assh _DEBUG]
  --verbose, -V                  Enable verbose mode
  --help, -h                     show help
  --version, -v                  print the version

用法示例

assh config build

重写并替换现有的〜/.ssh/配置文件。

当检测配置更改时,通过assh自动完成此操作。运行此命令可用于设置assh或维修配置文件。

$ assh config build > ~ /.ssh/config 

assh config list

列出主机和选项。

assh config list
Listing entries

*.scw -> root@[hostname_not_specified]:22
StrictHostKeyChecking=no [custom options]
UserKnownHostsFile=/dev/null [custom options]

*.shortcut1 -> bob@[hostname_not_specified]:22

*.shortcut2 -> bob@[hostname_not_specified]:22

bart -> bart@5.6.7.8:22

bart-access -> bob@[hostname_not_specified]:22

dolphin -> bob@dolphin:24

expanded-host[0-7]* -> bob@%h.some.zone:22

homer -> robert@1.2.3.4:2222

lisa-access -> bob@[hostname_not_specified]:22

maggie -> maggie@[hostname_not_specified]:22

marvin -> bob@[hostname_not_specified]:23

my-env-host -> user-moul@[hostname_not_specified]:22

schoolgw -> bob@gw.school.com:22
ForwardX11=no [custom options]

schooltemplate -> student@[hostname_not_specified]:22
ForwardX11=yes [custom options]
IdentityFile=~/.ssh/school-rsa [custom options]

vm-*.school.com -> bob@[hostname_not_specified]:22

(*) General options:
ControlMaster: auto
ControlPath: ~/tmp/.ssh/cm/%h-%p-%r.sock
ControlPersist: yes
Port: 22
User: bob\”>

$ assh config list
Listing entries

    *.scw -> root@[hostname_not_specified]:22
        StrictHostKeyChecking=no [custom options]
        UserKnownHostsFile=/dev/null [custom options]

    *.shortcut1 -> bob@[hostname_not_specified]:22

    *.shortcut2 -> bob@[hostname_not_specified]:22

    bart -> bart@5.6.7.8:22

    bart-access -> bob@[hostname_not_specified]:22

    dolphin -> bob@dolphin:24

    expanded-host[0-7]* -> bob@%h.some.zone:22

    homer -> robert@1.2.3.4:2222

    lisa-access -> bob@[hostname_not_specified]:22

    maggie -> maggie@[hostname_not_specified]:22

    marvin -> bob@[hostname_not_specified]:23

    my-env-host -> user-moul@[hostname_not_specified]:22

    schoolgw -> bob@gw.school.com:22
        ForwardX11=no [custom options]

    schooltemplate -> student@[hostname_not_specified]:22
        ForwardX11=yes [custom options]
        IdentityFile=~/.ssh/school-rsa [custom options]

    vm-*.school.com -> bob@[hostname_not_specified]:22

    (*) General options:
        ControlMaster: auto
        ControlPath: ~/tmp/.ssh/cm/%h-%p-%r.sock
        ControlPersist: yes
        Port: 22
        User: bob 

assh config graphviz

生成主机的GraphViz图

assh -hosts.png\”>

$ assh config graphviz | dot -Tpng > assh -hosts.png 

assh config search <keyword>

在主机和主机选项中搜索<keyword>

assh config search bart
Listing results for bart:
bart -> bart@5.6.7.8:22
bart-access -> moul@[hostname_not_specified]:22\”>

$ assh config search bart
Listing results for bart:
    bart -> bart@5.6.7.8:22
    bart-access -> moul@[hostname_not_specified]:22 

assh info

显示全系统的信息。

assh info
Debug mode (client): false
CLI Path: /path/to/ assh
Go version: go1.6.2
OS/Arch: darwin/amd64

RC files:
– ~/.ssh/ assh .yml
– ~/.ssh/ assh .d/hosts.yml
– ~/.ssh/ assh .d/moul.yml
– ~/.ssh/ assh .d/test.yml

Statistics:
– 299 hosts
– 2 templates
– 4 included files\”>

$ assh info
Debug mode (client): false
CLI Path: /path/to/ assh
Go version: go1.6.2
OS/Arch: darwin/amd64

RC files:
- ~/.ssh/ assh .yml
- ~/.ssh/ assh .d/hosts.yml
- ~/.ssh/ assh .d/moul.yml
- ~/.ssh/ assh .d/test.yml

Statistics:
- 299 hosts
- 2 templates
- 4 included files 

assh sockets list

列出主动控制插座。

assh sockets list
4 active control sockets in \”~/.ssh/cm/\”:

– bart/homer/lisa-22-root.sock (14 minutes)
– bart/homer-22-root.sock (14 minutes)
– bart-22-root.sock (14 minutes)
– marge-22-bart.sock (1 hour)\”>

$ assh sockets list
4 active control sockets in \"~/.ssh/cm/\":

- bart/homer/lisa-22-root.sock (14 minutes)
- bart/homer-22-root.sock (14 minutes)
- bart-22-root.sock (14 minutes)
- marge-22-bart.sock (1 hour) 

assh sockets flush

关闭主动控制插座。

assh sockets flush
Closed 4 control sockets.\”>

$ assh sockets flush
Closed 4 control sockets. 

assh sockets master

创建一个主控制插座。

$ assh sockets master 

assh ping

将数据包发送到SSH服务器并显示统计数据。

assh ping -c 4 localhost
PING localhost (127.0.0.1) PORT 22 (ssh) PROTO tcp
Connected to 127.0.0.1: seq=0 time=321µs protocol=tcp port=22
Connected to 127.0.0.1: seq=1 time=501µs protocol=tcp port=22
Connected to 127.0.0.1: seq=2 time=550µs protocol=tcp port=22
Connected to 127.0.0.1: seq=3 time=641µs protocol=tcp port=22

— localhost assh ping statistics —
4 packets transmitted, 4 packets received, 0.00% packet loss
round-trip min/avg/max = 321µs/503.25µs/641µs\”>

$ assh ping -c 4 localhost
PING localhost (127.0.0.1) PORT 22 (ssh) PROTO tcp
Connected to 127.0.0.1: seq=0 time=321µs protocol=tcp port=22
Connected to 127.0.0.1: seq=1 time=501µs protocol=tcp port=22
Connected to 127.0.0.1: seq=2 time=550µs protocol=tcp port=22
Connected to 127.0.0.1: seq=3 time=641µs protocol=tcp port=22

--- localhost assh ping statistics ---
4 packets transmitted, 4 packets received, 0.00% packet loss
round-trip min/avg/max = 321µs/503.25µs/641µs 

安装

使用GO获取最新版本(推荐方法):

go install moul.io/ assh /v2@latest

注意:使用GO1.7或更高版本测试


使用Homebrew(Mac OS X)获取最新发布的版本:

brew install assh

构建最新版本

brew install assh --HEAD

获取发布版本:https://github.com/moul/assh/releases


使用ASDF-VM安装:

assh
asdf install assh latest
asdf global assh latest\”>

asdf plugin add assh
asdf install assh latest
asdf global assh latest

注册包装器(可选)

要在使用高级模式匹配时提高经验,请在.bashrc / .zshrc / config.fish的末尾添加以下内容:

 alias ssh= \" assh wrapper ssh -- \"

此步骤不是强制性的,但强烈建议


注意ssh不了解高级模式;为了绕过这一限制, assh维护已知主机的列表,并使用所有这些已知的已知主机再生~/.ssh/config

如果没有包装器,则首次连接到新主机时将过时的~/.ssh/config风险,您需要再次启动该命令。

使用包装器, ssh始终使用更新的~/.ssh/config文件调用。

入门

  1. 备份您的旧~/.ssh/configcp ~/.ssh/config ~/.ssh/config.backup
  2. 创建一个新的~/.ssh/ assh .yml文件
  3. 运行assh config build > ~/.ssh/config以验证您的~/.ssh/ assh .yml文件的语法,并自动构建您的~/.ssh/config文件
  4. 你准备好了!

WebApp

assh包含一个在Heroku上托管的实验Web应用程序:https://assh.herokuapp.com/


assh .yml文件转换为ssh_config格式:

assh _config=@~/.ssh/ assh .d/test.yml | jq -r .ssh_config
# This file was automatically generated by assh v2.8.0
# on 2018-07-03 21:06:56 +0000 UTC, based on ~/.ssh/ assh .yml
#
# more info: https://gi*th*ub.*com/moul/assh

# host-based configuration
Host *.scw
Port 22
StrictHostKeyChecking no
User root
UserKnownHostsFile /dev/null
# ResolveCommand: /bin/sh -c \”scw inspect -f {{.PublicAddress.IP}} server:$(echo %h | sed s/.scw//)\”

Host lalala
Port 22
User moul
# HostName: 127.0.0.1

Host toto[0-5]toto
User samantha

# global configuration
Host *
ProxyCommand assh connect –port=%p %h\”>

$ http --form POST https://assh-dev.h*erok**uapp.com/ assh -to-ssh assh _config=@~/.ssh/ assh .d/test.yml | jq -r .ssh_config
# This file was automatically generated by assh v2.8.0
# on 2018-07-03 21:06:56 +0000 UTC, based on ~ /.ssh/ assh .yml
#
# more info: https://gi*th*ub.*com/moul/assh

# host-based configuration

下载源码

通过命令行克隆项目:

git clone https://github.com/moul/assh.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 assh https://www.zuozi.net/34257.html

UniTask
上一篇: UniTask
uno
下一篇: uno
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务