SSH连接Ubuntu Server服务器的两种方式

SSH连接Ubuntu Server服务器的两种方式,第1张

SSH(secure shell)用于远程和服务器交互

Ubuntu Server默认安装了OpenSSH Server,可通过端口22连接

SSH客户端可以用用户名密码的方式连接服务器,也可以用密钥对的方式连接服务器。

可以使用SSH客户端工具PuTTY,windows10自带的SSH工具,或者VMWare的SSH工具连接服务器

1在命令行用 用户名和密码连接

ssh username@serveraddress

2SSH客户端还可以用 密码对 (公钥和私钥)连接

这里使用Win10自带的工具

生成密钥对

运行命令:ssh-keygen

添加公钥

打开生成的公钥文件id_rsapub,复制全部内容

使用SSH密码登录的方式登录Ubuntu服务器,在当前用户目录创建文件夹ssh,进入ssh文件夹并创建文件authorized_keys,粘贴从公钥复制的内容并保存文件

修改SSH配置

修改Ubuntu Server的文件:

/etc/ssh/sshd_config

将PubkeyAuthentication yes前面的注释去掉

运行命令重启sshd服务

sudo systemctl restart sshd

退出SSH连接,重新用私钥登录登录

ssh <username>@<serveraddress> -i <私钥路径>

默认配置
Windows下有很多SSH工具。在这里我是用的是Putty。如果安装了Git并配置使用Putty的话,就不需要另外在安装Putty了。使用SSH连接服务器的命令如下:
ssh IP地址
一般来说为了安全性考虑,端口号等一些参数并不会使用默认值。这样的话命令就变成这样:
ssh 用户名@IP地址 -p 端口号
如果连接成功的话会提示你输入远程服务器的密码。全部成功之后SSH就会显示远程服务器的提示符,这时候就说明连接成功了。
密钥登录
每次登录SH都需要输入密码很麻烦,而且可能不太安全。SSH还能使用另外一种登录方式,也就是使用密钥登录。这种登录方式需要客户端生成一堆公钥私钥对,然后将公钥添加到服务器中,这样下次就可以直接登录了。
首先生成SSH密钥,依照提示输入信息即可。默认生成在用户主目录中的ssh文件夹中。带pub的是公钥,接下来需要添加到服务器中。
ssh-keygen
然后将本地公钥添加到服务器中,需要使用另一个命令:
scp -P 端口号 本地文件路径 用户名@远程服务器地址:远程路径
然后登陆服务器,找到复制进去的公钥,将公钥名字改为authorized_keys并添加到对应的ssh文件夹中。然后退出SSH重新登陆试试,成功的话不需要输入密码就会直接进入远程服务器。

SSH:安全外壳协议
一、SSH介绍
什么是SSH?
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据, 别有用心的人非常容易就可以截 获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻 击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。 服务器和你之间的数 据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
SSH的英文全称是Secure Shell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了, 而且也能够防止DNS和IP欺骗。还有一个 额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。 SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提 供一个安全的“通道”。
最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。 OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越 来越多的人使用它而不是SSH。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1x和2x。 用SSH 2x的客户程序是不能连接到SSH 1x的服务程序上去的。OpenSSH 2x同时支持SSH 1x和2x。
SSH的安全验证是如何工作的
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密, 但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器, 也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。 如果你要连接到SSH服务器 上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后, 先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发 送过来的公用密匙进行比较。如果两个密匙一致, 服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。 客户端软件收到“质 询”之后就可以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。 但是整个登录的过程可能需要10秒。
二、SSL介绍(Secure socket Layer & Security Socket Layer)
一个应用程序的安全需求在很大程度上依赖于将如何使用该应用程序和该应用程序将要保护什么。不过,用现有技术实现强大的、 一般用途的安全通常是可能的。认证就是一个很好的示例。
当顾客想从 Web 站点购买某个产品时,顾客和 Web 站点都要进行认证。顾客通常是以提供名字和密码的方式来认证他自己。 另一方面,Web 站 点通过交换一块签名数据和一个有效的 X509 证书(作为 SSL 握手的一部分)来认证它自己。 顾客的浏览器验证该证书并用所附的公用密钥验证签 名数据。一旦双方都认证了,则交易就可以开始了。
SSL 能用相同的机制处理服务器认证(就如在上面的示例中)和客户机认证。 Web 站点典型地对客户机认证不依赖 SSL — 要求用户提供密码是较容易的。而 SSL 客户机和服务器认证对于透明认证是完美的, 对等机 — 如 p2p 应用程序中的对等机之间一定会发生透明认证。
安全套接字层(Secure Sockets Layer (SSL)) ,SSL 是一种安全协议,它为网络(例如因特网)的通信提供私密性。SSL 使应用程序在通信时不用担心被窃听和篡改。 SSL 实际上 是共同工作的两个协议:“SSL 记录协议”(SSL Record Protocol)和“SSL 握手协议” (SSL Handshake Protocol)。“SSL 记录协议”是两个协议中较低级别的协议,它为较高级别的协议, 例如 SSL 握手协议对 数据的变长的记录进行加密和解密。SSL 握手协议处理应用程序凭证的交换和验证。
当一个应用程序(客户机)想和另一个应用程 序(服务器)通信时,客户机打开一个与服务器相连接的套接字连接。然后, 客户机和服务器对安全连接进行协商。作为协商的一部分,服务器向客户机作自我认 证。客户机可以选择向服务器作或不作自我认证。 一旦完成了认证并且建立了安全连接,则两个应用程序就可以安全地进行通信。按照惯例,我将把发起该通信的 对等机看作客户机, 另一个对等机则看作服务器,不管连接之后它们充当什么角色。
名为 A 和 B 的两台对等机想安全地进行通 信。在我们简单的 p2p 应用程序的环境中,对等机 A 想查询对等机 B 上的一个资源。 每个对等机都有包含其专用密钥的一个数据库(名为 keystore)和包含其公用密钥的证书。密码保护数据库的内容。 该数据库还包含一个或多个来自被信任的对等机的自签名证书。 对等机 A 发起这 项事务,每台对等机相互认证,两台对等机协商采用的密码及其长度并建立一个安全通道。完成这些 *** 作之后, 每个对等机都知道它正在跟谁交谈并且知道通道是 安全的。 SSL (Secure socket Layer)安全套接层协议主要是使用公开密钥体制和X509数字证书技术保护信息传输的机密性和完 整性, 它不能保证信息的不可抵赖性,主要适用于点对点之间的信息传输,常用Web Server方式。
安全套接层协议(SSL,Security Socket Layer)是网景(Netscape)公司提出的基于WEB应用的安全协议,它包括:服务器认证、 客户认证(可选)、SSL链路上的数据
完整性和SSL链路上的数据保密性。对于电子商务应用来说,使用SSL可保证信息的真实性、 完整性和保密性。但由于SSL不对应用层的消息进行数字签 名,因此不能提供交易的不可否认性,这是SSL在电子商务中使用的最大不足。 有鉴于此,网景公司在从Communicator 404版开始的所有浏 览器中引入了一种被称作“表单签名(Form Signing)”的功能, 在电子商务中,可利用这一功能来对包含购买者的订购信息和付款指令的表单进行 数字签名,从而保证交易信息的不可否认性。综上所述, 在电子商务中采用单一的SSL协议来保证交易的安全是不够的,但采用"SSL+表单签名"模式能够 为电子商务提供较好的安全性保证。
------------------------------------------------------------------------------------------------
(SSH: Secure Shell Protocol)
安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。Secure Shell,又可记为S S H,最初是U N I X系统上的一个程序,后来又迅速扩展到其他 *** 作平台。S S H是一个好的应用程序,在正确使用时,它可以弥补网络中的漏洞。除此以外, S S H之所以酷,还有以下原因:S S H客户端适用于多种平台。几乎所有的U N I X平台—包括H P - U X、L i n u x、A I X、S o l a r i s、Digital UNIX、I r i x、S C O,以及其他平台—都可以运行S S H。而且,已经有一些客户端(其中有些为测试版)可以运行于U N I X *** 作平台以外,包括O S / 2、V M S、B e O S、J a v a、Wi n d o w s 9 5 / 9 8和Windows NT。这样,你就可以在几乎所有的平台上运行S S H客户端程序了。对非商业用途它是免费的。许多S S H版本可以获得源代码,并且只要不用于商业目的,都可以免费得到。而且,U N I X版本也提供了源代码,这就意味着任何人都可以对它进行修改。但是,如果你选择它用于商业目的,那么无论使用何种版本的S S H,你都得确认已经注册并获得了相应权限。绝大多数S S H的客户端和守护进程都有一些注册限制。惟一的S S H通用公共注册(General Public License,G P L )版本是l s h,它目前还是测试版。通过I n t e r n e t传送密码安全可靠。这是S S H被认可的优点之一。如果你考察一下接入ISP(Internet Service Provider,I n t e r n e t服务供应商)或大学的方法,一般都是采用Te l n e t或P O P邮件客户进程。因此,每当要进入自己的账号时,你输入的密码将会以明码方式发送(即没有保护,直接可读),这就给攻击者一个盗用你账号的机会—最终你将为他的行为负责。对应用的支持。由于S S H的源代码是公开的,所以在U N I X世界里它获得了广泛的认可。L i n u x,其源代码也是公开的,大众可以免费获得,并同时获得了类似的认可。这就使得所有开发者(或任何人)都可以通过补丁程序或b u g修补来提高其性能,甚至还可以增加功能。这也第一部分获得并安装S S H意味着其性能可以不断得到提高而无须得到来自原始创作者的直接技术支持。S S H替代了不安全的远程应用程序。S S H是设计用来替代伯克利版本的r命令集的;它同时继承了类似的语法。其结果是,使用者注意不到使用S S H和r命令集的区别。利用它,你还可以干一些很酷的事。通过使用S S H,你在不安全的网络中发送信息时不必担心会被监听。你也可以使用P O P通道和Te l n e t方式,通过S S H可以利用P P P通道创建一个虚拟个人网络( Virtual Private Network, V P N )。S S H也支持一些其他的身份认证方法,如K e r b e r o s和安全I D卡等。
但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。 OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越 来越多的人使用它而不是SSH。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1x和2x。 用SSH 2x的客户程序是不能连接到SSH 1x的服务程序上去的。OpenSSH 2x同时支持SSH 1x和2x。
SSH 主要有三部分组成:
传输层协议 [SSH-TRANS] 提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在 TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。
用户认证协议 [SSH-USERAUTH] 用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当 SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希 H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。
连接协议 [SSH-CONNECT] 将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。
一旦建立一个安全传输层连接,客户机就发送一个服务请求。当用户认证完成之后,会发送第二个服务请求。这样就允许新定义的协议可以与上述协议共存。连接协议提供了用途广泛的各种通道,有标准的方法用于建立安全交互式会话外壳和转发(“隧道技术”)专有 TCP/IP 端口和 X11 连接。
通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"。
SSH分为两部分:客户端部分和服务端部分。
服务端是一个守护进程(demon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。
客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。
他们的工作机制大致是本地的客户端发送一个连接请求到远程的服务端,服务端检查申请的包和IP地址再发送密钥给SSH的客户端,本地再将密钥发回给服务端,自此连接建立。刚才所讲的只是SSH连接的大致过程,SSH 1x和SSH 2x在连接协议上还有着一些差异。
SSH被设计成为工作于自己的基础之上而不利用超级服务器(inetd),虽然可以通过inetd上的tcpd来运行SSH进程,但是这完全没有必要。启动SSH服务器后,sshd运行起来并在默认的22端口进行监听(你可以用 # ps -waux | grep sshd 来查看sshd是否已经被正确的运行了)如果不是通过inetd启动的SSH,那么SSH就将一直等待连接请求。当请求到来的时候SSH守护进程会产生一个子进程,该子进程进行这次的连接处理。
SSH:新的MVC软件开发模式, SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库 *** 作的封装,这种新的开发模式让我们的开发更加方便、快捷、思路清晰!

实现此的技术原理:
在内网通过域名绑定服务器,外网SSH访问连接时,通过域名的访问,实现访问内网LINUX。
具体的实现过程如下:
明确LINUX服务器内网访问地址端口,确保LINUX服务器正常开启SSH服务,在内网SSH可以正常访问连接。如图所示:
被访问端的Linux主机上使用nat123动态域名解析Linux版本。
在被访问端的Linux服务器安装nat123客户端,并登录使用它。
登录网页,左侧用户中心,添加域名解析,选择动态域名解析并添加确认。
选择动态域名解析记录,使用二级域名,或自己的域名。鼠标放在输入框有向导提示。如不理解负载均衡,不要勾选多点登录。
新添加动态解析后,等待几分钟生效。解析生效后,动态解析域名与本地公网IP是保持对应的。可以通过ping下域名核实,返回结果IP地址为本地公网IP地址时,表示动态解析生效正常。
路由器端口映射,路由映射SSH访问22端口。
因为公网IP是在路由器上的,外网访问时,需要经过路由,需要在路由器上做端口映射,将内网LINUX服务器访问22端口打通。路由器端口映射位置:转发规则/虚拟服务器/添加允许外网访问端口和协议。我的LINUX服务器SSH服务端口是默认的22,我内网对应LINUX服务器主机的内网IP地址是192168129。
外网访问时,使用动态解析域名。
在外网使用SSH访问内网LINUX服务器时,使用动态解析域名进行连接访问。域名是不变的,可以上网即可访问,再也不担心动态公网IP变化的问题。

xshell软件

linux系统

使用xshell远程连接我旁边的Ubuntu时,root用户登陆,密码正确,但是显示

“ssh服务器拒绝了密码。请再试一次”

原因:ssh服务基于安全考虑,没有给root用户远程连接的权限

解决办法:

登陆要连接的Ubuntu

vim /etc/ssh/sshd_config

找到PermitRootLogin 这一行,将后面的no 改为yes ,如图所示
此时再次利用xshell登陆root账户即可。

如果还是连不上,就要考滤iptables是否开启22号端口

云服务器还要考虑安全组是否开放22号端口。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13427634.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-03
下一篇 2023-08-03

发表评论

登录后才能评论

评论列表(0条)

保存