-
2020-08-20 20:09:26
ssh 是一个非常常用的工具,通常用来登录到远程主机上,不过 ssh 不仅仅只能用来登录,还能执行远程命令,或者进行多种的端口转发
基本使用
登录到远程主机
$ ssh <user>@<remote-ip>
ssh 默认连接的端口是
22
,如果 ssh server 监听的其他端口的话
那么可以使用-p <port>
来指定端口如果使用本地当前用户名登录的话,也可以省略
<user>@
,只需要<remote-ip>
即可如何查看 ssh server 监听的地址
# 远程主机上 $ netstat -tlnp | grep sshd
如何免密登录
使用 ssh 登录时,通常会需要输入密码,总会感觉不是很安全,比如让别人协助登录到主机上,就需要把密码告诉他
如果使用公钥认证的话,就只需要登录人提供一下公钥,而不需要告诉他密码了查看 ssh server 是否支持公钥认证
# 远程主机中 $ cat /etc/ssh/sshd_config | grep Pub #PubkeyAuthentication yes
默认为开启公钥认证,如果为 no 的话就需要修改为 yes,然后重启 ssh server
查看一下本地主机 ~/.ssh 目录下是否存在 rsa 秘钥(
id_rsa.pub
,id_rsa
)
没有的话使用ssh-keygen
生成秘钥,询问输入回车就行[iceber@localhost ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/iceber/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/iceber/.ssh/id_rsa. Your public key has been saved in /home/iceber/.ssh/id_rsa.pub. The key fingerprint is: e7:af:48:91:e7:61:c4:0b:c2:11:74:0d:1f:56:61:13 iceber@localhost.localdomain The key's randomart image is: +--[ RSA 2048]----+ | .+.ooo.Eo | | . o +.o . | | o . + | | . + . | | S * | | B . | | . o | | . . . | | . ... | +-----------------+
使用
ssh-copy-id
将公钥记录到到远程主机上$ ssh-copy-id <user>@<remote-ip>
一般主机中都会有 ssh-copy-id 命令,如果不存在的话,可以手动将公钥添加到远端主机中
$ ssh <user>@<remote-ip> 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
需要注意
~/.ssh
目录的权限必须是700
,~/.ssh/authorized_keys
的权限必须是600
或者644
,否则会出现异常远程主机信任该公钥后,就不需要输入密码啦
使用其他秘钥
ssh 会默认使用
~/.ssh/id_rsa
和~/.ssh/id_rsa.pub
,如果想要使用其他的秘钥文件怎么呢在执行
ssh-keygen
时,会要求选择秘钥的路径,输入新的秘钥路径Enter file in which to save the key (/home/iceber/.ssh/id_rsa): /home/iceber/.ssh/custom_rsa
~/.ssh 中就会生成私钥
custom_rsa
和公钥custom_rsa.pub
ssh-copy-id -i <公钥路径> <user>@<remote-ip>
将指定的公钥发送给服务端
ssh 使用-i <私钥路径>
来指定私钥禁止密码登录
既然公钥可以登录了,有时为了安全考虑,也就不需要密码登陆了
修改 ssh server 配置/etc/ssh/sshd_config
# /etc/ssh/sshd_config PasswordAuthentication no # 关闭密码验证
配置远程主机,使用别名登录
虽然可以免密登录的,但是每次登录还是需要配置
user
,remote-ip
,感觉好麻烦在
~/.ssh/config
中可以配置远程主机的信息# ~/.ssh/config Host iceber HostName 10.10.10.100 User iceber
可以直接使用
ssh iceber
登录了Host *
相当于全局配置还可以配置一些其他信息
Port <port>
远程主机的 ssh server portServerAliveInterval <seconds>
client 会每隔多少秒向 server 发送一次请求,防止和服务器的连接断开IdentityFile <path>
秘钥路径,rsa 的秘钥地址 (~/.ssh/id_rsa)
端口转发
ssh 不止能用来登录或者执行远程命令,还是用做端口转发
ssh 的端口转发分为三种本地转发
,远程转发
,动态转发
在使用端口转发时,通常会使用到
-N
,-f
两个 flag-N
表示不需要执行任何命令,用于端口转发-f
表示在后台运行,不需要登录到远端主机上
本地转发
本地转发
是指将发送到本地端口的请求发送到远端主机上ssh -Nf -L <本地地址>:<本地端口>:<远程主机目标地址>:<远程主机目标端口> <user>@<remote-ip>
访问
<本地地址>:<本地端口>
,数据会转发到<remote-ip>
主机的<远程主机目标地址>:<远程主机目标端口>
中<本地地址>
可以省略,默认为 127.0.0.1场景
远端主机(10.10.10.100)中运行一个 http server,但是他只监听了 localhost:8080 地址,但是我想在本地访问这个地址,该怎么办
ssh -Nf -L 8000:127.0.0.1:8080 iceber@10.10.10.100
这时通过本地 127.0.0.1:8000 就可以访问到 10.10.10.100 机器中的本地服务了
有时 MySQL 会限制登录的 ip,这时就可以使用本地端口转发来访问了
远程转发
远程转发
是指将发送到远端主机的请求转发到本地的目标端口ssh -Nf -R <远程主机地址>:<远程主机端口>:<本地目标地址>:<本地目标端口> <user>@<remote-ip>
在本地执行 ssh 远程转发命令,访问
<远程主机地址>:<远程主机端口>
时,请求会转发到本地<本地目标地址>:<本地目标端口>
<远程主机地址>:
可以省略,默认为 127.0.0.1,可以设置为 0.0.0.0 在所有网卡上建立转发
转发远程主机的非 localhost ip 时,需要修改/etc/ssh/sshd_config
# /etc/ssh/sshd_config GatewayPorts yes
场景
将局域网中的 ssh 通过远程主机暴露给外网
在局域网外,我们无法通过 ssh 连接到局域网中的主机,但是如果把局域网主机中将 ssh 端口和可以外网访问的远程主机端口建立远程转发,那么就可以通过远程主机访问局域网主机了ssh -Nf R 10022:localhost:22 iceber@<remote-ip>
将远程主机的 localhost:10022 端口接收的请求转发到本地 localhost:22 中
这时在外网登录远程主机,然后 ssh -p 10022 @localhost 就可以登录到局域网中了
不建议局域网中 ssh 端口直接和远程主机的外部 ip 建立端口映射
动态转发
动态转发
会在本地监听端口,所有发送到该端口的请求都转发到远程主机中,由远程主机来执行请求ssh -Nf -D <本地地址>:<本地端口> <user>@<remote-ip>
可以用来做 SOCKS5 代理,如果远程主机可以访问外网,这样通过把浏览器的代理服务器设置为 socks5://127.0.0.1:10080 就可以让远程主机来执行请求,同样可以访问到外网了
$ ssh -Nf -D 10080 iceber@<remote-ip>
其他设置
登录日志可以通过 /var/log/secure 来查看
配置 SSH 登录提醒
# /etc/ssh/sshd_config Banner <path>
可以在密码输入前会打印
<path>
中的内容登录后同样会有一些提示内容,这些提示内容再
/etc/update-motd.d
中(ubuntu)ssh server 配置
ssh server 的配置文件时
/etc/ssh/sshd_config
常用的一些配置项:Port <port>
设置ssh server 端口ListenAddress 0.0.0.0
监听地址PasswordAuthentication no
关闭密码验证PubkeyAuthentication yes
可以使用公钥登录RSAAuthentication yes
只允许RSA安全验证PermitRootLogin yes
运行 root 登录PermitEmptyPasswords no
不允许空密码登录LoginGraceTime 2m
用户不能成功登录,2m 后断开连接PrintLastLog yes
登录后打印上次登录信息
更多相关内容 -
更改Zookeeper端口后无法使用./zkCli.sh连接怎么办
2022-05-31 10:24:01错误: 解决方法: 在zookeeper安装目录中的bin目录下执行: ./zkCli.sh -server 本机ip:zookeeper端口号 1 例如: ./zkCli.sh -server localhost:2182 1 注意: 由于我在服务器本地启动zoo...错误:
解决方法:
在zookeeper安装目录中的bin目录下执行:
./zkCli.sh -server 本机ip:zookeeper端口号
- 1
例如:
./zkCli.sh -server localhost:2182
- 1
注意:
由于我在服务器本地启动zookeeper,所以ip直接使用localhost就可以了,2182是我更改的zookeeper端口号
-
sh代码-查找局域网内可ssh登录的主机(22端口)
2021-07-16 12:09:08sh代码-查找局域网内可ssh登录的主机(22端口) -
centos 7 修改sshd | 禁止 root登录及sshd端口脚本定义
2020-09-14 22:58:46主要介绍了centos 7 修改sshd | 禁止 root登录及sshd端口脚本定义,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 -
rsync 端口更换(默认873)
2020-09-30 21:39:21用rsync对网站进行镜像备份的时候,有时候需要设置自定义端口,那么就可以参考下面的方法 -
矩池云通过本地端口转发方式登陆VNC
2022-03-17 10:37:52使用方法是通过ssh本地端口转发,通过服务器转发到vnc的5901端口,然后通过localhost:本地端口,就可以在VNC Viewer软件中使用:localhost:本地端口登陆vnc了。 1、 本地打开终端/CMD,输入下面指令: 格式 ssh -p...如果你在租用机器的时候忘记开启了VNC功能,你可以试试用下面的方法连接VNC。
如果你租用服务器时,已经开启了VNC功能,可以参考这个教程矩池云使用VNC Viewer远程连接GPU主机,图形用户界面操作
使用方法是通过ssh本地端口转发,通过服务器转发到vnc的5901端口,然后通过localhost:本地端口,就可以在VNC Viewer软件中使用:localhost:本地端口登陆vnc了。
一、矩池云内设置vnc密码并开启vnc服务器
1.1 租用机器页面点击jupyter lab链接
1.2 进入jupyterlab后,点击Terminal
1.3 设置vnc密码
在Terminal里输入下面指令:
VNC_PASSWD="userpasswd" ./root/vnc/vnc_startup.sh
这里我选择的密码是userpasswd
,密码很重要,自己设置一个复杂一点的密码,带入到userpasswd
里面。输入下面指令,查看vnc进程,是否正常启动。
ps aux | grep vnc
二、本地设置端口转发
2.1 本地打开终端/CMD,输入下面指令
- 格式
ssh -p [sshport] -NL [localport]:localhost:[vnc远程端口] root@hz.matpool.com
sshport:矩池云机器的 SSH 端口。
localport:您本地的任一端口。
root@hz.matpool.com:机器租用成功后ssh上显示的用户和地址。
- 例子
ssh -p 26289 -NL 1998:localhost:5901 root@hz.matpool.com
vnc远程端口默认是5901。
注意: 开启后需要输入远程ssh连接密码,输入后按回车键即可,不会有其他输出,是正常的,另外这个界面不要关闭,关闭后本地端口转发就会失败。
2.2 打开VNC Viewer软件,输入:localhost:1998,然后按回车键,即可连接vnc。
点击
Continue
,继续连接。输入自己前面在Terminal设置的vnc连接密码,点击
OK
密码填写成功后就可以进入到服务器的vnc界面啦,如下所示,默认有四个图标:垃圾篓、系统磁盘、Home文件夹、谷歌浏览器如果想打开Terminal或者新建文件等其他操作,可以鼠标右键,选择相应的功能按钮即可。
如有更多问题,可以联系微信矩池云小助手。
-
LNMP下安装Pureftpd开启FTP服务以及修改FTP端口的方法
2021-01-20 15:27:55进入lnmp解压后的目录,执行:./pureftpd.sh 会显示如下图: 按提示输入当前MySQL的root密码,输入完成,回车确认,会提示如下信息: 这一步是设置FTP用户管理后台的登陆密码。输入完成回车确认 因为PHP管理后台... -
【shell脚本】修改ssh端口
2020-12-09 17:19:36#说明:SSHD服务默认监听端口是22,如果你不强制说明别的端口,”Port 22”注不注释都是开放22访问端口 portset=$1 if [ ! -z "$portset" ];then inputportlen=`echo "$portset"|sed 's/[0-9]//g'` #$portlen为空...#!/bin/bash #说明:SSHD服务默认监听端口是22,如果你不强制说明别的端口,”Port 22”注不注释都是开放22访问端口 portset=$1 if [ ! -z "$portset" ];then inputportlen=`echo "$portset"|sed 's/[0-9]//g'` #$portlen为空,说明输入的是一个整数 if [ "$inputportlen" == "" ] && [ "$portset" -gt "1" ] && [ "$portset" -lt "65535" ];then #判断用户输入是否是1-65535之间个一个整数 echo "--> 端口号输入正确" backup_sshd_config () { #获取当前日期和时间 dateAndTime=`date +"%Y%m%d%H%M%S"` echo "--> 开始备份/etc/ssh/sshd_config文件" /bin/cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$dateAndTime && echo "--> /etc/ssh/sshd_config文件备份成功" || { echo "--> /etc/ssh/sshd_config文件备份失败"; ExitCode=1; } bakfile=`/bin/ls /etc/ssh | grep $dateAndTime` echo "--> /etc/ssh/sshd_config文件备份结束,文件名为:$bakfile" } sshd_service_restart () { systemver=`cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/'` if [[ $systemver = "6" ]];then service sshd restart && echo "--> sshd服务重启完成" || { echo "--> sshd服务重启失败"; ExitCode=1; } else systemctl restart sshd.service && echo "--> sshd服务重启完成" || { echo "--> sshd服务重启失败"; ExitCode=1; } fi } #获取sshd运行进程ID getSSHProcessID=`ps -ef | grep sshd | awk '{if($3=="1" && $8=="/usr/sbin/sshd")print $2}'` if [ "$getSSHProcessID" != "" ];then #$getSSHProcessID不为空说明sshd服务启动正常 #获取sshd打开的端口列表 getSSHOpenPortList=`netstat -anop | grep $getSSHProcessID | grep ^tcp | grep LISTEN | grep -v ::: | grep sshd | awk '{print $4}' | awk -F ":" '{print $2}' | uniq | xargs echo` #计算sshd打开的端口数量 getSSHOpenPortCount=`netstat -anop | grep $getSSHProcessID | grep -v ::: | grep sshd | grep LISTEN | awk '{print $4}' | awk -F ":" '{print $2}' | uniq | wc -l` if [ "$getSSHOpenPortCount" == "1" ] && [ "$getSSHOpenPortList" == "$portset" ];then #如果当前只打开了一个端口,且与希望设置的端口相同,无需做任何配置 echo "sshd服务运行端口为$portset,无需修改!!!" exit 0 elif [ "$getSSHOpenPortCount" == "1" ] && [ "$getSSHOpenPortList" == "22" ];then #如果端口为22说明使用的是默认的#Port 22设置,则增加Port设置 listenportlent=`netstat -ano | grep -w LISTEN | grep -w $portset` if [ "$listenportlent" == "" ];then #判断端口是否被占用 #备份配置文件 backup_sshd_config echo "Port $portset" >> /etc/ssh/sshd_config && echo "--> 修改sshd运行端口为$runport成功" || { echo "--> 修改sshd运行端口为$runport失败"; ExitCode=1; } #重启sshd服务 sshd_service_restart else echo "端口已经被占用,请重新输入" exit 1 fi else #当打开了一个或多个非22,且与设置的端口不同时 listenportlent=`netstat -ano | grep -w LISTEN | grep -w $portset` if [ "$listenportlent" == "" ];then #判断端口是否被占用 #备份sshd配置文件 backup_sshd_config for sshport in $getSSHOpenPortList do /bin/sed -i "s/$sshport/$portset/g" /etc/ssh/sshd_config done #重启sshd服务 sshd_service_restart else echo "端口已经被占用,请重新输入" exit 1 fi fi else echo "--> sshd服务未启动" exit 1 #尝试重启sshd服务 sshd_service_restart fi else echo "--> 请输入1-65535之间的一个整数" exit 1 fi else echo "--> 请输入端口号" exit 1 fi
将代码保存到test.sh,赋权,即可执行
-
端口如何查看linux的端口号
2021-05-11 02:56:37如何查看l inux的端口号如何查看li n ux的端口号篇一 lin ux查看端口的方法想查看TCP或者UDP端口使用情况使用netstat-anp如果有些进程看不见如只显示” -”可以尝试sudo netstat-anp如果想看某个端口的信息... -
koolshare 更改管理Web页面登录端口
2020-05-24 10:50:39由于各大运营商禁用了80端口,而且IPv6地址还没有普及,自家的koolshare路由器想要通过常规的远程web登录已经无法实现,但是更改web页面的目的端口是一个可行的方法 用SSH登录koolshare路由器 ssh root@192.168.... -
linux指定端口登录linux服务器
2020-10-25 20:21:21ssh 到指定端口 ssh -p xx user@ip xx 为 端口号 user为用户名 ip为要登陆的ip ssh -p xx gaozhen@xxx.xxx.xx.xxx -
分布式服务管理框架-Zookeeper客户端zkCli.sh使用详解
2016-11-13 00:30:54:指定zk服务器的IP与端口,zk默认的客户端端口为2181 shell > cd /usr/ local /zookeeper/bin shell > ./zkCli.sh -timeout 5000 -server 127.0 .0 .1 : 2181 若出现上图提示所示,表示已经成功连接到... -
centos8部署笔记(查看杀死端口、登录阿里云、复制文件到阿里云、编写sh后台执行jar包,nginx配置)
2021-08-02 15:45:071、查看端口号8080的进程 lsof -i:8080 发现进程PID为 “2200093” 2、结束进程 kill -9 2200093 3、通过ssh登录阿里云centos8,前提已经配置过ssh,@后面是服务器外网IP,然后输入服务器密码即可 ssh root@... -
TCP、UDP 端口测试工具
2017-11-16 16:11:12通过该工具可以测试本机、远程计算机端口是否开放,是否可以通过TCP、UDP协议正常访问,可以设置连接发送内容,查看返回值,验证端口访问是否正常。 -
查看虚拟机开放端口号
2021-08-14 02:21:11查看虚拟机开放端口号 内容精选换一换Linux命令随用随记1、touch start.sh 创建文件2、chmod 777 start.sh 修改文件权限3、firewall-cmd --query-port=8848/tcp 查看端口号是否开启4、firewall-cmd --zone=public --... -
ssh-keygen、ssh-copy-id的使用与端口修改后操作(SSH无密码登陆)
2021-08-14 07:29:28在做linux自动化运维的时候,服务器时常需要配置无密码的登录方式,下面就来说一下无密码登陆-------------------------方法1-------------------------1、做一个公钥,一个私钥在帐户家目录有:id_rsa(私钥) id_rsa.... -
计算机三大端口:公认端口、注册端口、动态和私有端口
2009-09-08 13:05:14计算机端口可分为3大类: 1) 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服 务的协议。例如:80端口实际上总是HTTP通讯。 2) 注册端口(Registered Ports):... -
ESXI 6.7修改网页端口号
2021-02-01 03:23:31一、终端开启SSH功能,方便修改出错维护1.按F2进入登录界面,输入...(显示Disable为已开启,是关闭选项)二、VI编辑器修改网页端口号vi /etc/vmware/rhttpproxy/config.xml原内容80443修改后88334433三、增加防火... -
Zookeeper客户端zkCli.sh使用
2018-10-23 17:10:582> -r:表示客户端以只读模式连接 3> -server:指定zk服务器的IP与端口,zk默认的客户端端口为2181 shell> cd /usr/local/zookeeper/bin shell> ./zkCli.sh -timeout 5000 -server 127.0.0.1:2181 若出现上图提示... -
linux系统防火墙开启放行其他端口
2021-01-17 15:04:141、WDCP 系统端口放行:(1)3.2版本登录wdcp面板后点击“安全管理”——“防火墙设置”——“快速添加”,如图填写端口(协议默认都使用tcp),保存即可放行。(2)2.5版本登录wdcp后,点击“安全管理”——“防火墙... -
Linux学习记录——expect实现ssh自动登陆+转发端口
2021-12-21 15:36:02Linux学习记录——expect实现ssh自动登陆+转发端口 -
VMWare EXSI 修改http默认访问端口80
2021-04-24 12:41:03首先终端要开启SSH功能 1.按F2进入登录界面,输入...然后修改默认端口有以下两种方法: 一、关闭防火墙:ESXi修改默认HTTP默认80和443端口 二、不关闭防火墙:按下列7个步骤操作即可 vi /etc/vmware/rhttpproxy/con -
修改linux的ssh连接端口
2021-07-20 11:44:01文章目录五、修改linux的ssh连接端口1、登录服务器,打开sshd_config文件2、修改配置文件中的端口3、保存后退出,重启sshd服务 五、修改linux的ssh连接端口 1、登录服务器,打开sshd_config文件 # vim /etc/ssh/sshd... -
aix系统怎么查看端口是否开启
2021-08-13 08:12:49aix系统怎么查看端口是否开启 内容精选换一换确认服务器服务是否开启。...系统的端口监听状态登录虚拟机内部。执行如下命令,查看系统的端口监听状态,如图1所示。netstat -ntplWi如果网站直接无... -
防火墙规则,指定ip访问mysql数据库3306端口
2021-02-07 16:34:47防火墙规则,指定ip访问mysql数据库3306端口2019年12月08日阅读数:6这篇文章主要向大家介绍防火墙规则,指定ip访问mysql数据库3306端口,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。... -
Python自动化获取Linux服务状态与端口
2021-11-27 11:18:13tracker端口:' + get_fdfs_trackerd() + ' ' + 'storage端口:' + get_fdfs_storaged()) elif get_fdfs_trackerd() == '': print('>>>ERROR服务运行异常,未监听到trackerd端口,storage端口:' + get_fdfs_... -
zkCli.sh命令行常用命令
2020-12-20 15:23:50zookeeper提供了客户端zkCli.sh脚本(window版本为zkCli.cmd)通过zkCli.sh连接zookeeper服务连接本机zookeeper服务,执行:./zkCli.sh连接远程zookeeper服务,跟上参数:./zkCli.sh -server ip:port在命令行输入:help...