什么是SSH呢?
SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的"通道"。SSH客户端与服务器端通讯时,用户名及口令均进行了加密,有效防止了对口令的。最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。SSH是由客户端和服务端的软件组成的。SSH安装容易、使用简单,而且比较常见,一般的Unix系统、Linux系统、FreeBSD系统都附带有支持SSH的应用程序包。
SSH的安全验证是如何工作的?
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种方式的攻击。
第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密"质询"(challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且"中间人"这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。
命令的格式
首先、确保server端的ssh服务是开的(serviceshhd start)
然后在client端输入:ssh usrname@serverip (远程登录)
scp filename usrname@serverip:/URL(远程传输)
常出现的问题:
问题一
ssh登录的时候链接端口失败
提示(1):
# ssh 172.16.81.221
ssh: connect to host 172.16.81.221 port 22: No route tohost
这由于server端没有开机或是网络不通(这个原因很多,最简单的是网线没有插。还有就是可能会是网卡down了等)
提示(2):
# ssh work@172.16.81.221
ssh: connect to host 172.16.81.221 port 22: Connectionrefused
这是由于对方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 beenchanged.
The fingerprint for the RSA key sent by the remote hostis
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 toget 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 haverequested strict checking.
Host key verificationfailed.
SSH分客户端openssh-client和openssh-server
如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudoapt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server
sudo apt-get install openssh-server
然后确认sshserver是否启动了:
ps -e |grep ssh
如果看到sshd那说明ssh-server已经启动了。
如果没有则可以这样启动:sudo /etc/init.d/ssh start
ssh-server配置文件位于/etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。
然后重启SSH服务:
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
然后使用以下方式登陆SSH:
ssh tuns@192.168.0.100 tuns为192.168.0.100机器上的用户,需要输入密码。
断开连接:exit
分享到:
相关推荐
SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样\"中间人\"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以...
Linux安全攻略之SSH服务连接时的常见问题与解答.docx
本一键脚本旨在简化 Ubuntu 系统下开启 Root 用户登录并配置 SSH 远程连接的步骤,帮助用户实现便捷的远程管理和操作。通过这一脚本,您可以快速设置 SSH 连接,方便进行远程服务器操作和管理。 适用人群: 拥有 ...
此代码可实现Windows下连接SSH,并操作linux命令行,实现各种操作,包括程序执行输入等。想获得更多操作流程可以留言,我定全力解答。
ssh 连接oracle实例加解析。非常适合新手
【资源说明】 ...我们首先开放linux服务器的ssh服务,通过OpenSSL、libssh2编写C++程序,实现了对服务器进行配置和管理的代码,得到了原型系统。 **5.正确性验证** 我们验证了linux服务器提供的服
MyEclipse建立ssh框架的服务器,Android studio开发APP主体,通过网络连接服务器,获取json数据,解析json数据显示在app,第一次开发demo。
****比较适合新手理解SSH框架***** 闲下来搭了个SSH框架,写些小系统的话可以直接拿来用哦。 连接池是proxool,log4j日志,拦截器过滤器什么的都有。 基本上每个地方以及每个配置文件,每行,都有相关的说明。全...
* 解析脚本执行返回的结果集 * @author Ickes * @param in 输入流对象 * @param charset 编码 * @since V0.1 * @return * 以纯文本的格式返回 */ private String processStdout(InputStream in, String ...
本人实际项目功能简化出来的小功能,由三大框架ssh构成,使用的是注解方式。项目中去除了连接数据库那一块,如需数据库操作,请进行相应修改。使用方式:直接用eclipse把项目导入进去,配置Tomcat7.0运行即可
开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作 安装paramiko模块 pip3 install paramiko 基于用户密码方式 import paramiko # 创建SSH对象 ssh = paramiko.SSH...
同步SSH SynnefoSSH 是一个命令行工具,用于在部署中轻松执行到 VM 的 SSH。关于SynnefoSSH 使用库将虚拟服务器的名称转换为服务器的主机名、用户和 ssh 端口。 对所有可用的Synnefo云服务执行名称解析。配置该工具...
我们遇到了类似的挑战,特别是通过SSH隧道访问MySQL数据库,所有的问题和解答都有助于找到解决方案。 但是,我们需要可以与Laravel应用程序和Lumen服务即插即用的产品。 所以我们写了这个包。 我们希望你喜欢它!...
常公司的开发环境都会布置在内网,然后会有公共的服务器让大家在上面进行开发,测试,所以经常会有ssh连接服务器,或者本地mysql client连接服务器的需求,我个人经历过的公司经常会发生ssh/mysql连接公共服务器非常...
如果用BasicDataSource来配置数据库连接,还要加入2个包: 7.commons-pool.jar 8.commons-dbcp.jar Hibernate需要的jar包: 1.hibernate3.jar(hibernate的核心jar包) 2.antlr-2.7.2.jar(语言转换工具,hibernate...
一些常见问题的解答 教程 Netmiko 概述 安全复制 Netmiko 通过 SSH 代理 Netmiko 和 TextFSM Netmiko 和什么构成完成 入门: 创建代表设备的字典。 支持的 device_types 可以在ssh_dispatcher.py 中找到,参
以下是对Linux系统下ssh的相关配置进行了详细的分析介绍,需要的朋友可以过来参考下
Sublime Rsync SSH 使远程目录与本地项目文件夹同步。描述使用此插件,您可以使用rsync和ssh将项目文件夹同步到一台或多台远程服务器。术语remote是配置用于同步的本地项目文件夹。 destination是特定服务器上作为...
1. DNS反向解析问题 OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法。如果客户机的IP没有域名,或者DNS服务器很慢或不通,那么登录就...
如果用BasicDataSource来配置数据库连接,还要加入2个包: 7.commons-pool.jar 8.commons-dbcp.jar 三、Hibernate需要的jar包: 1.hibernate3.jar(hibernate的核心jar包) 2.antlr-2.7.2.jar(语言转换工具,...