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服务端很简单只需要运行
# sshd
就可以了。或者在/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
只要配置正确就可以连上远端的服务器了
分享到:
相关推荐
嵌入式Linux SSH服务搭建是将Secure Shell (SSH) 服务应用于资源有限的嵌入式设备上,以实现远程安全登录、文件传输等功能。SSH是一种网络协议,它提供了加密网络服务,确保在不安全的网络环境中传输数据的安全性。...
arm-linux ssh安装包 交叉编译arm-none-linux-gnueabi-gcc版本gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) glibc 2.12.2
Linux SSH (Secure Shell) 是一个网络协议,用于在不安全的网络上安全地远程登录Linux系统,执行命令和传输数据。SSH提供了加密的网络通信,确保了数据在传输过程中的安全性,防止被窃听或篡改。在Windows系统中,...
linux ssh 使用视频教程, 视频讲解ssh的使用
Linux SSH Key 生成和使用 Linux SSH key 是一种常用的身份验证方式,通过生成公钥和私钥来实现无密码登录远程 Linux 主机。本文将详细介绍如何在 Linux 和 Windows 平台上生成和使用 SSH key。 一、Linux 平台上...
### Linux SSH 的配置详解 #### 3.1 Linux SSH 的安装与配置 ##### 安装 SSH 服务 在 Linux 系统中安装 SSH 服务前,我们首先要确认系统是否已经安装了 SSH。可以通过以下命令检查 SSH 服务是否已安装: ```bash...
标题“Java Linux SSH登录”指的是使用Java编程语言与Linux操作系统进行安全外壳(SSH)通信的过程。在描述中提到,这个过程通常涉及建立一个通道并执行单个命令。这里,我们将会详细探讨Java如何通过SSH连接到Linux...
### Linux SSH配置与安全增强详解 #### 一、概述 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录和命令执行,以及数据传输。它能够有效防止远程管理过程中的信息泄露、身份替换等攻击。在Linux系统...
本文将详细介绍Linux SSH客户端和服务端的安装、配置以及Windows作为服务端与Linux之间的SSH连接。 ### 一、Linux SSH服务端安装 在大多数Linux发行版中,SSH服务通常预装。如果没有,可以通过包管理器安装: - *...
Linux SSH Putty.zip 文件是一个与远程访问Linux服务器相关的压缩包,它包含了一个流行的终端模拟器Putty,用于连接到Linux系统使用SSH(Secure Shell)协议。SSH是一种网络协议,允许用户安全地通过不安全的网络...
### Linux SSH 显示中文乱码解决方案 在日常工作中,我们经常需要通过SSH远程登录到Linux系统来进行各种管理和操作。然而,一个常见的问题是当我们在Windows环境下使用SSH客户端(如PuTTY等)连接到Linux服务器时,...
Linux SSH 使用 SSH 公钥密钥自动登录 Linux 服务器 本文档将介绍如何使用 SSH 公钥密钥自动登录 Linux 服务器,解决频繁输入用户名和密码的问题。下面是相关的知识点: 1. SSH 公钥密钥生成:使用 `ssh-keygen` ...
在Linux系统中,SSH(Secure Shell)是一种网络协议,用于安全地远程登录到服务器,进行命令行操作。SSH提供加密的网络通信,确保了数据传输的安全性。掌握基本的SSH命令是任何Linux管理员或开发者的必备技能。接...
Linux SSH 配置和禁止 Root 远程登录设置 Linux SSH 配置和禁止 Root 远程登录设置是 Linux 系统中的一项重要的安全设置。通过本文档,我们将了解如何配置 SSH 服务器,禁止 Root 用户远程登录,提高 Linux 系统的...
Linux SSH 安全加固方法 Linux SSH 安全加固方法是为了增强服务器的安全性,防止未经授权的访问和攻击。下面将详细介绍 Linux SSH 安全加固方法的相关知识点。 一、禁用 ROOT 远程 SSH 登录 在 Linux 系统中,...
配置linux ssh免密码登录,第一行生成密钥,第二行是要对哪台机器免密码ssh登录就配置成哪一台,这里root@hadoop00,root是用户名,hadoop00是主机名
Linux SSH(Secure Shell)是一种广泛使用的网络协议,用于在不安全的网络环境中提供加密的远程登录和其他网络服务。SSHpass是一个方便的Linux工具,专为自动化任务设计,它允许通过命令行接口在SSH连接中自动输入...
标题中的"Linux ssh登录远程服务器 expect"指的就是使用 Expect 脚本来自动化Linux系统中通过SSH协议登录远程服务器的过程。这种方式对于需要频繁进行自动化运维任务的管理员来说非常有用,可以显著提高效率,减少...
加固Linux SSH保证服务器安全.pdf
在Linux系统中,SSH是管理员和用户常用的一种远程控制工具。本文将详细介绍如何配置SSH以及如何禁止Root用户通过SSH进行远程登录。 ### 1. SSH配置 #### 1.1 修改`sshd_config`文件 SSH服务的配置主要在`/etc/ssh...