1.什么是SSH
传统的网络服务程序,如:ftp、POP和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
从前,一个名为Tatu Yl?nen的芬兰程序员开发了一种网络协议和服务软件,称为SSH(Secure SHell的缩写)。 通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,虽然许多人把Secure Shell仅当作Telnet的替代物,但你可以使用它来保护你的网络连接的安全。你可以通过本地或远程系统上的Secure Shell转发其他网络通信,如POP、X、PPP和FTP。你还可以转发其他类型的网络通信,包括CVS和任意其他的TCP通信。另外,你可以使用带TCP包装的Secure Shell,以加强连接的安全性。除此之外,Secure Shell还有一些其他的方便的功能,可用于诸如Oracle之类的应用,也可以将它用于远程备份和像SecurID卡一样的附加认证。
2.SSH的工作机制
SSH分为两部分:客户端部分和服务端部分。
服务端是一个守护进程(demon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。
客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。
他们的工作机制大致是本地的客户端发送一个连接请求到远程的服务端,服务端检查申请的包和IP地址再发送密钥给SSH的客户端,本地再将密钥发回给服务端,自此连接建立。刚才所讲的只是SSH连接的大致过程,SSH 1.x和SSH 2.x在连接协议上还有着一些差异。
SSH被设计成为工作于自己的基础之上而不利用超级服务器(inetd),虽然可以通过inetd上的tcpd来运行SSH进程,但是这完全没有必要。启动SSH服务器后,sshd运行起来并在默认的22端口进行监听(你可以用 # ps -waux | grep sshd 来查看sshd是否已经被正确的运行了)如果不是通过inetd启动的SSH,那么SSH就将一直等待连接请求。当请求到来的时候SSH守护进程会产生一个子进程,该子进程进行这次的连接处理。
但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。
3.安装使用OpenSSH
这里主要讲的是基于FreeBSD的OpenSSH的配置,其它Unix及派生系统使用OpenSSH的方法大致相同FreeBSD中集成了OpenSSH,在很多Linux的发行版中都没有包括OpenSSH。但是,可以从网络上下载并安装OpenSSH,他是完全免费的。(可以访问OpenSSH的主页 http://www.openssh.org)
生成密钥对
使用ssh-keygen来生成密钥对,比如要用DSA加密算法生成一个4096Bit的密钥对可以输入如下命令(具体参数请参阅man ssh-keygen):
#ssh-keygen -b 4096 -t dsa
|
%ssh-keygen -b 4096 -t dsa
|
Generating public/private dsa key pair. Enter file in which to save the key (/home/fdy84/.ssh/id_dsa):
|
(密钥对将要存的路径,括号内为默认) Created directory '/home/fdy84/.ssh'. Enter passphrase (empty for no passphrase): (输入口令) Enter same passphrase again: (再次输入口令,千万不要忘记否则就只有从新生成密钥了) Your identification has been saved in /home/fdy84/.ssh/id_dsa. (你的私钥) Your public key has been saved in /home/fdy84/.ssh/id_dsa.pub. (你的公钥) The key fingerprint is: bb:1b:f5:1c:77:62:90:21:59:7e:c6:65:e5:24:c6:e5 fdy84@freebsd
|
密钥分发
刚才生成了一对密钥,把私钥放在自己的机器上的~/.ssh/目录下并保证访问权限是“-rw-------”(即600)。再把生成的公钥放在要连接的远程主机的~/.ssh/目录下并改名为authorized_keys,并且保证文件除了属主外没有被人修改的权限。
4.配置使用SSH
配置服务端 启动SSH服务端很简单只需要运行
就可以了。或者在/etc/rc.conf中加入 sshd_enable="YES" 就可以在每次启动时自动运行SSH服务端了。 SSH服务端的配置使用的配置文件是“/etc/ssh/sshd_config”,并且OpenSSH1.x和2.x的服务器配置文件均为此文件。
配置客户端
客户端想连接远程服务器只需要输入 #ssh 域名(或ip) 就可以了 比如想以fdy84用户连接IP地址为192.168.0.6的一台远程服务器 需要键入
# ssh 192.168.0.6 -l fdy84 | 只要配置正确就可以连上远端的服务器了
5.使用Windows下的SecureCRT进行SSH连接
如果在Windows下想要通过SSH远程管理服务器怎么办?其实Windows有很多远程管理软件,我们在这主要介绍一下SecureCRT中SSH连接的使用。(以Version 4.1.1为准介绍)
Create Public Key... SecureCRT也可以生成密钥对,不过SecureCRT最大只支持2048Bit的密钥,点选Tools->Create Public Key...,选择密钥算法和密钥长度,输入完口令后再使劲晃鼠标以给它生成密钥的足够的随机量之后就等待计算机生成密钥对,如图
点选左上角的Connect按钮,开启Connect对话框
再点击红圈所示的New Session按钮进入Session Options对话框
在这里我们选择SSH连接,并填入要连接的主机名称(或者ip地址),用户名,再选择基于公钥方式的认证,点击Properties...进入密钥配置对话框
在红色圈所示的位置填入你的私钥文件。
现在点击刚才建立的那个连接进行SSH连接,根据提示点击几个对话框之后就连接上远程的服务器了,如图
特别要注意的是由SecureCRT生成的密钥对和用OpenSSH生成的密钥对在格式上不一样,而且二者都只能认识自己的密钥的格式,所以在用SecureCRT同OpenSSH连接时分别都要用它们自己的密钥格式,可以用任何一个方法生成然后使用ssh-keygen -i 把SecureCRT生成的的密钥转换成OpenSSH的密钥格式,或者用ssh-keygen -e把OpenSSH的密钥格式转换成SecureCRT能够识别的IETF SECSH格式。
虽然SSH提供基于密码的登陆,不过基于安全考虑笔者并不推荐使用这种登陆,鉴于现在机器的速度普遍已经很快,推荐使用4096位的密钥以加强安全性。
以上是关于SSH的一些简单的介绍以及使用OpenSSH和SecureCRT进行连接的一些方法,由于本人能力有限文章中难免有些错误,希望感兴趣的读者能够指出并与我联系 Email:fdy84@sina.com fdy84@frontfree.net
|
相关推荐
5. **测试SSH连接**:使用`ssh 用户名@远程主机地址`尝试连接,如果配置正确,应能成功登录。 SSH还有其他高级特性,如端口转发,允许将本地端口的数据流通过SSH隧道转发到远程服务器,增强网络通信的安全性。此外...
【使用VSCode+SSH远程连接主机/服务器】的教程旨在帮助深度学习和其他需要共享高性能计算资源的用户,解决多人共用一台主机时由于只有一个显示设备而产生的协作问题。通过VSCode的远程开发功能,可以实现在本地...
scp(Secure Copy)是一种基于 SSH 的远程安全登录的命令,可以将主机 A 上的文件或目录拷贝给主机 B,并且可以改名字,也可以将主机 B 上的文件或目录下载到主机 A 中,同时也支持修改文件名。 使用 scp 命令可以...
本文以华为S5130交换机为例,详细介绍了如何配置Web、Telnet和SSH远程访问,以及解决相关故障的方法,非常适合初学者学习。 首先,配置Web和Telnet远程访问。在华为S5130交换机上,我们需要进入系统视图并创建一个...
【WebSSH远程登录详解】 WebSSH是一种基于Web的SSH客户端,它允许用户通过网页界面远程登录并管理Linux服务器,提供了一种便捷、安全的访问方式,尤其适合在跨设备或公共网络环境中操作远程主机。本篇文章将深入...
在远程主机上,打开`sshd_config`文件,通常是`/etc/ssh/sshd_config`。确保以下配置项允许密钥登录: ```conf PubkeyAuthentication yes RSAAuthentication yes PermitRootLogin without-password ``` 如果允许...
### Ubuntu的SSH远程登录知识点详解 #### 一、前言 在现代的IT环境中,SSH(Secure Shell)作为一项重要的安全协议,被广泛应用于不同主机之间的远程管理与数据传输。Ubuntu作为一种流行的Linux发行版,其SSH远程...
如果想要禁止root用户通过SSH远程登录,则可以使用命令`set ssh root-login deny`。 ```junos [edit system services] set ssh root-login deny ``` #### 三、注意事项 - 在配置SSH服务时,应特别注意保持系统...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。配置SSH无密码远程登录可以极大地简化系统管理员的工作,提高效率,减少因频繁输入密码而导致的安全风险。以下是如何在主机...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他服务。零配置SSH指的是简化SSH连接过程,使得用户无需手动配置公钥认证或记住复杂的密码,即可实现快速、安全的登录。这个...
你可以使用`ssh-keygen -t rsa`生成公钥和私钥对,然后使用`ssh-copy-id -i id_rsa.pub root@ip`将公钥复制到远程主机的`~/.ssh/authorized_keys`文件中,这样就可以无密码登录了。 `scp`命令用于安全地复制文件和...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。它有两种主要版本:SSH1和SSH2。虽然SSH1曾广泛使用,但因为其存在一些安全漏洞,现在大多数系统都转向了SSH2。本文将深入...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。在SSH证书登录配置中,我们通常会涉及到以下几个关键步骤和知识点: 1. **生成SSH密钥对**: `ssh-keygen -t rsa` 是生成...
生成密钥对的命令是`ssh-keygen`,然后将公钥(默认为`~/.ssh/id_rsa.pub`)添加到远程主机的`~/.ssh/authorized_keys`文件中。 5. **防火墙设置**: 如果有防火墙,确保打开SSH服务使用的端口(默认为22)。在...
下面将详细介绍SSH远程登录Linux的基本概念、配置及使用方法。 1. SSH的基本原理 SSH通过加密通信通道,确保了数据传输的安全性。它使用公钥/私钥对进行身份验证,防止中间人攻击。当用户尝试连接到远程Linux服务器...
登录远程主机后,检查`.ssh/authorized_keys`文件中是否包含了自己的公钥: ``` [root@remote-host ~]# cat .ssh/authorized_keys ``` 5. **测试免密码登录** 重新从本地机器尝试登录远程主机,此时不应再...
V7 交换机作为 SSH 服务端登录配置方法主要涉及H3C交换机的SSH服务器配置,确保设备可以通过安全的SSH协议进行远程管理。SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供加密的通信,尤其适合于管理...
设置连接到远程主机的端口。默认为 22 端口。 - **Cipher blowfish** 设置加密使用的密码。这里指定了使用的加密算法为 blowfish。 - **EscapeChar ~** 设置 escape 字符。这里指定了使用的 escape 字符为 ...