ssh 常用用法小结
在我们日常的工作中,经常涉及到维护服务器,那么为了方便操作,以及安全方面的考虑,通常我们都会在服务器上安装ssh服务端,这样,在我们自己的机器上通过ssh客户端工具连接到服务器,既方便又安全。下面说说ssh应用的基本功能。
1、连接到远程主机:
命令格式 :
ssh name@remoteserver 或者
ssh remoteserver -l name
说明:以上两种方式都可以远程登录到远程主机,server代表远程主机,name为登录远程主机的用户名。
2、连接到远程主机指定的端口:
命令格式:
ssh name@remoteserver -p 2222 或者
ssh remoteserver -l name –p 2222
说明:p 参数指定端口号,通常在路由里做端口映射时,我们不会把22端口直接映射出去,而是转换成其他端口号,这时就需要使用-p 端口号命令格式。
3、通过远程主机1跳到远程主机2:
命令格式:
ssh -t remoteserver1 ssh remoteserver2
说明:当远程主机remoteserver2无法直接到达时,可以使用-t参数,然后由remoteserver1跳转到remoteserver2。在此过程中要先输入remoteserver1的密码,然后再输入remoteserver2的密码,然后就可以操作remoteserver2了。
4、通过SSH运行远程shell命令:
命令格式:
ssh -l name remoteserver ‘command’
说明:连接到远程主机,并执行远程主机的command命令。例如:查看远程主机的内存使用情况。
$ ssh –l root 192.168.1.100 svmon –G
5、修改SSH监听端口:
默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否
运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口。打开/etc/ssh/sshd_config文件并查找下面这样的行:
Port 22
去掉该行前面的# 号,然后修改端口号并重新启动SSH服务:
$ /etc/init.d/ssh restart
6、仅允许SSH协议版本2:
有两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问
题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。编辑/etc/ssh/sshd_config文件并查找下面这样的行:
#Protocol 2,1
修改为
Protocol 2
7、禁止root用户登录:
通常情况下,不采用直接用root用户登录到远程主机,由于root用户拥有超级权限,这样会带来安全隐患,所以,一般我们用普通用户登录,当需要管理远程主机时,再切换到root用户下。打开/etc/ssh/sshd_config文件并查找下面这样的行:
#PermitRootLogin yes
将#号去掉,然后将yes修改成no,重启ssh服务,这样就可以禁止root用户登录。
8、设置登录时提示信息
首先编辑一个文件,如bannertest.txt,文件内容自行定义。然后打开/etc/ssh/sshd_config文件并查找下面这样的行:
#Banner /some/path
将#号去掉,然后将bannertest.txt文件的全路径替换/some/path,然后保存,重启ssh服务。当客户端登录时,就会看到bannertest.txt文件中的提示信息。
9、进行端口映射:
假如公司内网有台web服务器,但是只对内不对外,这样,外网就无法访问,可以用ssh进行端口映射来实现外网访问内网的web服务器。假如web服务器名为webserver,webserver可以用ssh访问到远端主机remoteserver,登录到webserver,然后用下面命令进行映射
命令格式:
ssh -R 3000:localhost:80 remoteserver
执行完成后,在remoteserver机器上,执行netstat -an|grep 3000,查看有没有开通3000端口。并执行以下命令观察是否可以打开webserver上的网页
$ w3m http://127.0.0.1:3000
如果能打开界面,说明映射成功.但是,这只限于本机访问web服务器,即只能remoteserver机器访问webserver。因为3000端口绑定的是remoteserver机器的127.0.0.1端口。可以编辑remoteserver机器上的/etc/ssh/sshd_config文件并添加如下内容:
添加 GatewayPorts yes 内容,把监听端口3000绑定到 0.0.0.0 地址上,这样外部的所有机器都能访问到这个监听端口,然后保存退出。并重启ssh服务。完成后其它机器就可以在浏览器中输入 http://remoteserver:3000来访问webserver了。
10、scp命令:
scp命令是SSH中最方便有用的命令,可以在两台服务器之间传送文件。并且在传输过程中仍是使用ssh加密的。
命令格式:
scp -p root@192.168.1.120:/tmp/test /bak
将远程主机的/tmp/test 文件复制到本地的/bak文件夹下
scp -p /bak/1234 root@192.168.1.120:/tmp
将本地/bak/1234 文件复制到远程主机的/tmp路径下
ssh还有很多其他用法,例如sftp等,这里不在讲述,有兴趣可以从网上查些资料
=================================
ssh服务常见问题总结
问题一
ssh登录的时候链接端口失败
提示(1):
# ssh 172.16.81.221
ssh: connect to host 172.16.81.221 port 22: No route to host
这由于server端没有开机或是网络不通(这个原因很多,最简单的是网线没有插。还有就是可能会是网卡down了等)
提示(2):
# ssh work@172.16.81.221
ssh: connect to host 172.16.81.221 port 22: Connection refused
这是由于对方server的ssh服务没有开。这个server端开启服务即可。
问题二
ssh到server上的时候密码是对的但是报如下信息:
# ssh 172.16.81.221
root@172.16.81.221's password:
Permission denied, please try again.
这个是由于如果不输入用户名的时候默认的是root用户,但是安全期间ssh服务默认没有开root用户的ssh权限
解决方法:
要修改root的ssh权限,即修改 /etc/ssh/sshd_config文件中
PermitRootLogin no 改为 PermitRootLogin yes
问题三
登录是出现如下提示:
ssh root@172.16.81.221
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
76:fb:b3:70:14:48:19:d6:29:f9:ba:42:46:be:fb:77.
Please contact your system administrator.
Add correct host key in /home/fante/.ssh/known_hosts to get rid of this
message.
Offending key in /home/fante/.ssh/known_hosts:68
RSA host key for 172.16.81.221 has changed and you have requested strict checking.
Host key verification failed.
server端密码或是ip对应的server等其他发生改变的时候。解决方法一般就需要删除~/.ssh/known_hosts的对应行,然后再登录即可。
问题四
如何通过ssh使用远程的图形启动到本地。
在本机执行xhost +修改远端/etc/ssh/sshd_config文件,X11Forwarding yes这一行为yes。重启ssh服务。登录时执行ssh -X [远端IP]登录之后执行图形配置工具可以在本机显示 。
=================================
ssh连接不上解决思路
近期因为搭建新服次数较多,所以自己总结了一下在遇到 ssh连接不上时候的解决思路,供大家参考。大家如果有什么新的思路也可以一起讨论一下 ~
以下的测试没有特殊说明均是使用普通账号登陆
状况一: ssh IP_A 或ssh root@IP_A 都显示 Permission denied (publickey,gssapi-with-mic).
思路:可以检查一下IP_A上面的SSH版本是否正确,线上服务器如果存在sshd路径是/use/local/bin/sshd的,一定要升级sshd版本,正确的版本是/usr/sbin/sshd
状况二: ssh IP_A显示 Permission denied (publickey,gssapi-with-mic).但是ssh root@IP_A 成功
思路:可以检查一下/etc/ssh/sshd_config,里面有一段AllowUsers,将User_name@IP_B[IP_B_HOSTNAME]写进去,然后再尝试连接一下
状况三: ssh IP_A总是需要密码,但是ssh root@IP_A 成功(或也不成功,也需要密码)
思路:可以检查一下文件夹和.ssh/authorized_keys的权限,如果权限太大也会出问题。基本authorized_keys给740就可以了。文件夹不仅仅是指.ssh,还需要注意一下/home/user,当user文件夹的权限过大时也会出现问题,这里需要注意一下
ssh -v root@IP_A (显示debug信息,便于后续调试)
另外在实际中需要关注一下messlog,看一下里面有没有报错信息
在我们日常的工作中,经常涉及到维护服务器,那么为了方便操作,以及安全方面的考虑,通常我们都会在服务器上安装ssh服务端,这样,在我们自己的机器上通过ssh客户端工具连接到服务器,既方便又安全。下面说说ssh应用的基本功能。
1、连接到远程主机:
命令格式 :
ssh name@remoteserver 或者
ssh remoteserver -l name
说明:以上两种方式都可以远程登录到远程主机,server代表远程主机,name为登录远程主机的用户名。
2、连接到远程主机指定的端口:
命令格式:
ssh name@remoteserver -p 2222 或者
ssh remoteserver -l name –p 2222
说明:p 参数指定端口号,通常在路由里做端口映射时,我们不会把22端口直接映射出去,而是转换成其他端口号,这时就需要使用-p 端口号命令格式。
3、通过远程主机1跳到远程主机2:
命令格式:
ssh -t remoteserver1 ssh remoteserver2
说明:当远程主机remoteserver2无法直接到达时,可以使用-t参数,然后由remoteserver1跳转到remoteserver2。在此过程中要先输入remoteserver1的密码,然后再输入remoteserver2的密码,然后就可以操作remoteserver2了。
4、通过SSH运行远程shell命令:
命令格式:
ssh -l name remoteserver ‘command’
说明:连接到远程主机,并执行远程主机的command命令。例如:查看远程主机的内存使用情况。
$ ssh –l root 192.168.1.100 svmon –G
5、修改SSH监听端口:
默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否
运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口。打开/etc/ssh/sshd_config文件并查找下面这样的行:
Port 22
去掉该行前面的# 号,然后修改端口号并重新启动SSH服务:
$ /etc/init.d/ssh restart
6、仅允许SSH协议版本2:
有两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问
题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。编辑/etc/ssh/sshd_config文件并查找下面这样的行:
#Protocol 2,1
修改为
Protocol 2
7、禁止root用户登录:
通常情况下,不采用直接用root用户登录到远程主机,由于root用户拥有超级权限,这样会带来安全隐患,所以,一般我们用普通用户登录,当需要管理远程主机时,再切换到root用户下。打开/etc/ssh/sshd_config文件并查找下面这样的行:
#PermitRootLogin yes
将#号去掉,然后将yes修改成no,重启ssh服务,这样就可以禁止root用户登录。
8、设置登录时提示信息
首先编辑一个文件,如bannertest.txt,文件内容自行定义。然后打开/etc/ssh/sshd_config文件并查找下面这样的行:
#Banner /some/path
将#号去掉,然后将bannertest.txt文件的全路径替换/some/path,然后保存,重启ssh服务。当客户端登录时,就会看到bannertest.txt文件中的提示信息。
9、进行端口映射:
假如公司内网有台web服务器,但是只对内不对外,这样,外网就无法访问,可以用ssh进行端口映射来实现外网访问内网的web服务器。假如web服务器名为webserver,webserver可以用ssh访问到远端主机remoteserver,登录到webserver,然后用下面命令进行映射
命令格式:
ssh -R 3000:localhost:80 remoteserver
执行完成后,在remoteserver机器上,执行netstat -an|grep 3000,查看有没有开通3000端口。并执行以下命令观察是否可以打开webserver上的网页
$ w3m http://127.0.0.1:3000
如果能打开界面,说明映射成功.但是,这只限于本机访问web服务器,即只能remoteserver机器访问webserver。因为3000端口绑定的是remoteserver机器的127.0.0.1端口。可以编辑remoteserver机器上的/etc/ssh/sshd_config文件并添加如下内容:
添加 GatewayPorts yes 内容,把监听端口3000绑定到 0.0.0.0 地址上,这样外部的所有机器都能访问到这个监听端口,然后保存退出。并重启ssh服务。完成后其它机器就可以在浏览器中输入 http://remoteserver:3000来访问webserver了。
10、scp命令:
scp命令是SSH中最方便有用的命令,可以在两台服务器之间传送文件。并且在传输过程中仍是使用ssh加密的。
命令格式:
scp -p root@192.168.1.120:/tmp/test /bak
将远程主机的/tmp/test 文件复制到本地的/bak文件夹下
scp -p /bak/1234 root@192.168.1.120:/tmp
将本地/bak/1234 文件复制到远程主机的/tmp路径下
ssh还有很多其他用法,例如sftp等,这里不在讲述,有兴趣可以从网上查些资料
=================================
ssh服务常见问题总结
问题一
ssh登录的时候链接端口失败
提示(1):
# ssh 172.16.81.221
ssh: connect to host 172.16.81.221 port 22: No route to host
这由于server端没有开机或是网络不通(这个原因很多,最简单的是网线没有插。还有就是可能会是网卡down了等)
提示(2):
# ssh work@172.16.81.221
ssh: connect to host 172.16.81.221 port 22: Connection refused
这是由于对方server的ssh服务没有开。这个server端开启服务即可。
问题二
ssh到server上的时候密码是对的但是报如下信息:
# ssh 172.16.81.221
root@172.16.81.221's password:
Permission denied, please try again.
这个是由于如果不输入用户名的时候默认的是root用户,但是安全期间ssh服务默认没有开root用户的ssh权限
解决方法:
要修改root的ssh权限,即修改 /etc/ssh/sshd_config文件中
PermitRootLogin no 改为 PermitRootLogin yes
问题三
登录是出现如下提示:
ssh root@172.16.81.221
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
76:fb:b3:70:14:48:19:d6:29:f9:ba:42:46:be:fb:77.
Please contact your system administrator.
Add correct host key in /home/fante/.ssh/known_hosts to get rid of this
message.
Offending key in /home/fante/.ssh/known_hosts:68
RSA host key for 172.16.81.221 has changed and you have requested strict checking.
Host key verification failed.
server端密码或是ip对应的server等其他发生改变的时候。解决方法一般就需要删除~/.ssh/known_hosts的对应行,然后再登录即可。
问题四
如何通过ssh使用远程的图形启动到本地。
在本机执行xhost +修改远端/etc/ssh/sshd_config文件,X11Forwarding yes这一行为yes。重启ssh服务。登录时执行ssh -X [远端IP]登录之后执行图形配置工具可以在本机显示 。
=================================
ssh连接不上解决思路
近期因为搭建新服次数较多,所以自己总结了一下在遇到 ssh连接不上时候的解决思路,供大家参考。大家如果有什么新的思路也可以一起讨论一下 ~
以下的测试没有特殊说明均是使用普通账号登陆
状况一: ssh IP_A 或ssh root@IP_A 都显示 Permission denied (publickey,gssapi-with-mic).
思路:可以检查一下IP_A上面的SSH版本是否正确,线上服务器如果存在sshd路径是/use/local/bin/sshd的,一定要升级sshd版本,正确的版本是/usr/sbin/sshd
状况二: ssh IP_A显示 Permission denied (publickey,gssapi-with-mic).但是ssh root@IP_A 成功
思路:可以检查一下/etc/ssh/sshd_config,里面有一段AllowUsers,将User_name@IP_B[IP_B_HOSTNAME]写进去,然后再尝试连接一下
状况三: ssh IP_A总是需要密码,但是ssh root@IP_A 成功(或也不成功,也需要密码)
思路:可以检查一下文件夹和.ssh/authorized_keys的权限,如果权限太大也会出问题。基本authorized_keys给740就可以了。文件夹不仅仅是指.ssh,还需要注意一下/home/user,当user文件夹的权限过大时也会出现问题,这里需要注意一下
ssh -v root@IP_A (显示debug信息,便于后续调试)
另外在实际中需要关注一下messlog,看一下里面有没有报错信息
发表评论
-
glibc版本信息及安装
2017-12-28 15:42 1398在高版本的glibc上编译的不能到底版本的glibc ... -
论GNU、Linux和GNU/Linux之间的关系
2017-12-28 15:17 360相信很多人看到了这个标题就会产生疑问,这篇文章到底要讲 ... -
linux的软链接与硬链接
2017-11-03 16:25 320Linux链接分两种,一 ... -
使用mailx发送邮件
2013-04-12 10:57 959mailx是UNIX系统上用来处理邮件的工具,使用它可以发送, ... -
查看linux系统信息
2013-02-25 18:58 916Linux系统信息查看命令大全 系统 # uname -a ... -
在windows中使用UltraEdit编辑linux下文件
2013-01-18 13:21 5918在windows中使用UltraEdit编辑linux下文件 ... -
beyondCompare 工具比较linux下文件夹
2013-01-18 11:56 1220在windows环境下,用beyondCompare 工 ... -
Linux 目录结构以及作用详解
2013-01-06 14:58 7601、什么是文件系统 当 ... -
Linux通过脚本实现远程自动备份
2013-01-05 16:43 795考虑到在本机上备份数据,一旦该机器硬盘出现故障,数 ... -
Linux的僵尸进程及其解决方法
2013-01-05 16:36 7441. 产生原因: ... -
(linux) find command
2013-01-04 13:22 1298find命令的主要功能是在 ... -
linux之cp/scp命令+scp命令详解
2012-12-25 16:34 942名称:cp使用权限:所有使用者使用方式:cp [options ... -
过滤小结(Linux)
2012-12-20 16:32 0============================ $ ... -
十项Linux操作系统安全管理技巧经验总结
2012-12-18 16:23 629由于Linux操作系统是一个开放源代码的免费操作系统,因此 ... -
Linux磁盘管理中quota命令介绍应用
2012-12-18 14:33 1337Quota 在Linux里,quota就是对硬盘进行限制 ... -
linux中ssh 连接缓慢解决方法
2012-12-13 13:30 1248重新安装机器的情况下 ... -
Redhat linux 命令行设置IP
2012-12-11 14:27 1243redhat linux版本命令行设置IP ifcon ... -
Linux软件包安装方式小结
2012-12-11 10:45 799Linux操作系统软件包安 ... -
Linux压缩解压的相关命令总结
2012-12-11 10:32 788Linux下常用压缩格 ... -
Linux下Python的安装方法
2012-11-29 18:41 724Linux下Python的安装方法: 1.下载源代码 ht ...
相关推荐
本项目是我在培训机构学习...4 用ssh结合完成的 5其中用到的UI有easy ui 几乎常用的用法也都有涉及到 应该来说是一份很好的学习资料 如果是找毕业设计的同学请绕道 都说了不是很完整了 辛辛苦苦总结的 希望大家给好评
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及三个开源框架:Struts、Hibernate和Spring,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅仅是一本J2EE...
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及Struts、 Hibernate和Spring三个开源框架,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅是一本J2EE入门图书...
比较 3 1.3.2 GUI图形界面与操作系统内核的彼 此相对独立 4 1.3.3 Windows中的“网络邻居”概念 5 1.3.4 Windows中的注册表文件与文本文 件的比较 6 1.3.5 域的概念 6 1.4 小结 7 第2章 ...
1.5 小结 11 第2 章 越狱iOS 平台简介 12 2.1 iOS 系统架构 12 2.1.1 iOS 目录结构 13 2.1.2 iOS 文件权限 15 2.2 iOS 程序类型 16 2.2.1 Application 16 2.2.2 Dynamic Library 19 2.2.3 Daemon ...
1.7 本章小结 50 第2章 JSF的基本用法 51 2.1 MVC和JSF 52 2.1.1 MVC和常见MVC框架 52 2.1.2 JSF的优势 56 2.2 下载和安装JSF 57 2.3 JSF使用入门 60 2.3.1 从输入页面开始 60 2.3.2 开发托管Bean 61 2.3.3 定义导航...
#下面是最后一部分,这个部分其实是上面输出的一个总结,通过这个总结,可以大概了解服务器目录的安全状态。 System checks summary ===================== File properties checks... Required commands check ...
03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和数据链路层 08 网络层和arp协议 09 传输层和应用层 第2章 01 上节课复习 02 arp协议复习 03 字符编码 第3章 01 网络基础和dos命令 02 为何学习...
{1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...