代码之家  ›  专栏  ›  技术社区  ›  Sławosz

如何更改谷歌云实例上的sshd端口?

  •  1
  • Sławosz  · 技术社区  · 6 年前

    我在改港口 /etc/ssh/sshd_config 到23。我重新启动了sshd( sudo systemctl restart sshd )我为23添加了防火墙规则:

    gcloud compute firewall-rules create debug-ssh-23 --allow tcp:23

    但仍然不起作用…ssh命令超时。如何改变 sshd 端口正确?

    编辑:

    防火墙规则是: { "allowed": [ { "IPProtocol": "tcp", "ports": [ "23" ] } ], "creationTimestamp": "2018-10-02T14:02:23.646-07:00", "description": "", "direction": "INGRESS", "disabled": false, "id": "3968818270732968496", "kind": "compute#firewall", "name": "debug-ssh-23", "network": "https://www.googleapis.com/compute/v1/projects/foo/global/networks/default", "priority": 1000, "selfLink": "https://www.googleapis.com/compute/v1/projects/foo/global/firewalls/debug-ssh-23", "sourceRanges": [ "0.0.0.0/0" ] }

    但是我不能在这个端口上访问简单的nginx服务。80号开始工作。80的规则是相似的。

    sshd_配置:

    # Force protocol v2 only
    Protocol 2
    
    # Disable IPv6 for now
    AddressFamily inet
    
    # /etc is read-only.  Fetch keys from stateful partition
    # Not using v1, so no v1 key
    HostKey /mnt/stateful_partition/etc/ssh/ssh_host_rsa_key
    HostKey /mnt/stateful_partition/etc/ssh/ssh_host_ed25519_key
    
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    PermitRootLogin no
    UsePAM yes
    
    PrintMotd no
    PrintLastLog no
    UseDns no
    Subsystem sftp internal-sftp
    
    PermitTunnel no
    AllowTcpForwarding yes
    X11Forwarding no
    
    Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr
    
    # Compute times out connections after 10 minutes of inactivity.  Keep alive
    # ssh connections by sending a packet every 7 minutes.
    ClientAliveInterval 420
    
    AcceptEnv EDITOR LANG LC_ALL PAGER TZ
    
    1 回复  |  直到 5 年前
        1
  •  2
  •   Martin Zeitler    6 年前

    此外 sshd_config 选项 Port ,另请参见 ListenAddress

    运行 sudo systemctl reload sshd.service 应用更改。

    您需要添加选项 ssh-flag 要连接到另一个端口:

    gcloud compute --project "PROJECT_NAME" ssh --zone "us-central1-b" "instance-1" --ssh-flag="-p 23"
    

    在云控制台中,还有“在自定义端口的浏览器窗口中打开”。

    看看,如果它在听什么,在听什么…

    sudo cat /var/log/secure | grep sshd
    

    输出应该如下所示:

    instance-1 sshd[1192]: Server listening on 0.0.0.0 port 23.
    instance-1 sshd[1192]: Server listening on :: port 23.
    
        2
  •  0
  •   Scott Paterson    5 年前

    我不需要将ssh标志添加到gcloud命令中(我可以查看该命令,但不知道如何编辑)。我按照这些说明:

    Using SSH through airplane WiFi that blocks port 22

    但是我的CentOS安装有一个空白的sshd_配置。我只是在上面加了一行:

    Port 80
    

    然后运行(我首先执行了上面链接中的命令):

    systemctl restart sshd.service
    

    然后我在80端口上运行sshd。

    其他注意事项:

    1. 我之所以使用它是因为我想在JetBlue航班上工作,并且无法使用ssh连接到服务器(似乎它们阻塞了端口22通信,我不想更改运行sshd的端口)。所以,我创建了这个虚拟机来在端口80上运行ssh,然后我可以从那里连接到我的服务器。

    2. 为了节省我在谷歌云信用卡上的300美元,我关闭了我的虚拟机实例,当我在飞机上的时候,我打开了它,并且在谷歌云区域上没有足够的资源来启动我的实例。啊!!在您起飞前将您的虚拟机实例设置为“正在运行”,以确保它可以提前使用。将它移动到另一个区域是一个pita,所以我创建了一个新实例,发现我可以连接到它,即使它被设置为默认情况下通过浏览器窗口中的gcloud控制台的connect via ssh在端口22上运行ssh,所以不需要更改ssh所在的端口。不管怎样,正在运行(至少对于Jetblue而言)

    3. 当我使用CentOS 7映像创建第二个VM实例时,这一次它创建了一个完整的sshd_配置文件,我刚刚更改了以下行:

    #Port 22

    到:

    端口80
    

    也执行了我帖子第一个链接中的所有命令。