`
xf986321
  • 浏览: 160506 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ssh 远程访问和传输文件

阅读更多

OpenSSH

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。它用安全、加密的网络连接工具代替了 telnet、ftp、 rlogin、rsh 和 rcp 工具。OpenSSH 支持 SSH 协议的版本 1.3、1.5、和 2。自从 OpenSSH 的版本 2.9 以来,默认的协议是版本 2,该协议默认使用 RSA 钥匙。

1. 为什么使用 SSH?

使 用 OpenSSH 工具将会增进你的系统安全性。 所有使用 OpenSSH 工具的通讯,包括口令,都会被加密。 telnet 和 ftp 使用纯文本口令,并被明文发送。这些信息可能会被截取,口令可能会被检索,然后未经授权的人员可能会使用截取的口令登录进你的系统而对你的系统造成危害。 你应该尽可能地使用 OpenSSH 的工具集合来避免这些安全问题。

另一个使用 OpenSSH 的原因是,它自动把 DISPLAY 变量转发给客户机器。换一句话说,如果你在本地机器上运行 X 窗口系统,并且使用 ssh 命令登录到了远程机器上,当你在远程机器上执行一个需要 X 的程序时,它会显示在你的本地机器上。如果你偏爱图形化系统管理工具,却不能够总是亲身访问该服务器,这就会为你的工作大开方便之门。

2. 配置 OpenSSH 服务器

要运行 OpenSSH 服务器,你必须首先确定你安装了正确的 RPM 软件包。openssh-server 软件包是必不可少的,并且它依赖于 openssh 软件包的安装与否。

OpenSSH 守护进程使用 /etc/ssh/sshd_config 配置文件。Red Hat Linux 9 安装的默认配置文件在多数情况下应该足以胜任。如果你想使用没有被默认的 sshd_config 文件提供的方式来配置守护进程,请阅读 sshd 的说明书(man)页来获取能够在配置文件中定义的关键字列表。

要启动 OpenSSH 服务,使用 /sbin/service sshd start 命令。要停止 OpenSSH 服务器,使用 /sbin/service sshd stop 命令。如果你想让守护进程在引导时自动启动,请参阅相关资料来获取关于如何管理服务的信息。

如果你重新安装了 Red Hat Linux 系统,任何在它被重装前使用 OpenSSH 工具连接到这个系统上的客户在它被重装后将会看到下列消息:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ 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.

重 装后的系统会为自己创建一组新的身份标识钥匙;因此客户会看到 RSA 主机钥匙改变的警告。如果你想保存系统原有的主机钥匙,备份 /etc/ssh/ssh_host*key* 文件,然后在系统重装后恢复它。该过程会保留系统的身份。当客户机在该系统重装后试图连接它,它们就不会看到以上的警告信息。(还有一种解决方法 见:http://chinaunix.net/forum/viewtopic.php?t=109562&start=0)

3. 配置 OpenSSH 客户

要从客户机连接到 OpenSSH 服务器上,你必须在客户机器上装有 openssh-clients 和 openssh 软件包。

3.1. 使用 ssh 命令

ssh 命令是 rlogin、rsh 和 telnet 命令的安全替换。它允许你在远程机器上登录并在其上执行命令。

使用 ssh 来登录到远程机器和使用 telnet 相似。要登录到一个叫做 penguin.example.net 的远程机器,在 shell 提示下键入下面的命令:

ssh penguin.example.net

第一次使用 ssh 在远程机器上登录时,你会看到和下面相仿的消息:

The authenticity of host penguin.example.net cant be established.

DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.

Are you sure you want to continue connecting (yes/no)?

键入 yes 来继续。这会把该服务器添加到你的已知主机的列表中,如下面的消息所示:

Warning: Permanently added penguin.example.net (RSA) to the list of known hosts.

下一步,你会看到向你询问远程主机口令的提示。在输入口令后,你就会在远程主机的 shell 提示下了。如果你没有指定用户名,你在本地客户机器上登录用的用户名就会被传递给远程机器。如果你想指定不同的用户名,使用下面的命令:

ssh username@penguin.example.net

你还可以使用 ssh -l username penguin.example.net。

ssh 命令可以用来在远程机器上不经 shell 提示登录而执行命令。它的语法格式是: ssh hostname command。譬如,如果你想在远程主机 penguin.example.net 上执行 ls /usr/share/doc 命令,在 shell 提示下键入下面的命令:

ssh penguin.example.net ls /usr/share/doc

在你输入了正确的口令之后, /usr/share/doc 这个远程目录中的内容就会被显示,然后你就会被返回到你的本地 shell 提示下。

3.2. 使用 scp 命令

scp 命令可以用来通过安全、加密的连接在机器间传输文件。它与 rcp 相似。

把本地文件传输给远程系统的一般语法是:

scp localfile username@tohostname:/newfilename

localfile 指定源文件,username@tohostname:/newfilename 指定目标文件。

要把本地文件 shadowman 传送到你在 penguin.example.net 上的账号内,在 shell 提示下键入(把 username 替换成你的用户名):

scp shadowman username@penguin.example.net:/home/username

这会把本地文件 shadowman 传输给 penguin.example.net 上的 /home/username/shadowman 文件。

把远程文件传输给本地系统的一般语法是:

scp username@tohostname:/remotefile /newlocalfile

remotefile 指定源文件,newlocalfile 指定目标文件。

源文件可以由多个文件组成。譬如,要把目录 /downloads 的内容传输到远程机器 penguin.example.net 上现存的 uploads 目录,在 shell 提示下键入下列命令:

scp /downloads/* username@penguin.example.net:/uploads/

3.3. 使用 sftp 命令

sftp 工具可以用来打开一次安全互动的 FTP 会话。它与 ftp 相似, 只不过,它使用安全、加密的连接。它的一般语法是:sftp username@hostname.com。一旦通过 验证,你可以使用一组和使用 FTP 相似的命令。请参阅 sftp 的说明书页(man)来获取这些 命令的列表。要阅读说明书页,在 shell 提示下执行 man sftp 命令。sftp 工具只在 OpenSSH 版本 2.5.0p1 以上才有。

3.4. 生成钥匙对

如果你不想每次使用 ssh、scp 或 sftp 时都要输入口令来连接远程机器,你可以生成一对授权钥匙。

钥匙必须为每个用户生成。要为某用户生成钥匙,用想连接到远程机器的用户身份来遵循下面的步骤。如果你用根用户的身份完成了下列步骤,就只有根用户才能使用这对钥匙。

从 OpenSSH 版本 3.0 开始,~/.ssh/authorized_keys2、~/.ssh/known_hosts2 和 /etc/ssh_known_hosts2 就会过时。SSH 协议 1 和 2 共享 ~/.ssh/authorized_keys、~/.ssh/known_hosts 和 /etc/ssh/ssh_known_hosts 文件。

Red Hat Linux 9 默认使用 SSH 协议 2 和 RSA 钥匙。

窍门

如果你重装了 Red Hat Linux,但是想保留现有的钥匙对,备份你的主目录中的 .ssh 目录。重装后,把该目录复制回主目录。该进程可为系统上的所有用户进行,包括根用户。

3.4.1. 为版本 2 生成 RSA 钥匙对

使用下列步骤来为 SSH 协议的版本 2 生成 RSA 钥匙对。从 OpenSSH 2.9 开始,它已成为默认设置。

1. 要生成 RSA 钥匙对与协议的版本 2 合作,在 shell 提示下键入下列命令:

ssh-keygen -t rsa

接受 ~/.ssh/id_rsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。

公钥被写入 ~/.ssh/id_rsa.pub。密钥被写入 ~/.ssh/id_rsa。决不能把密钥出示给任何人。

2. 使用 chmod 755 ~/.ssh 命令改变你的 .ssh 目录的许可权限。

3. 把 ~/.ssh/id_rsa.pub 的内容复制到你想连接的机器上的 ~/.ssh/authorized_keys 文件中。如果 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/id_rsa.pub 文件复制到那个机器上的 ~/.ssh/authorized_keys 文件中。

4. 如果你运行的是 GNOME,跳到第 3.4.4 节。如果你没在运行 X 窗口系统,跳到第 3.4.5 节。

3.4.2. 为版本 2 生成 DSA 钥匙对

使用下面的步骤来为 SSH 协议的版本 2 生成 DSA 钥匙对。

1. 要生成用于协议的版本 2 的 DSA 钥匙对,在 shell 提示下键入下面的命令:

ssh-keygen -t dsa

接受 ~/.ssh/id_dsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。

窍门

口令句是用来验证用户的一串词汇和字符。 口令句和一般口令的不同之处在于:在口令句中你可以使用空格或制表符。口令句通常比一般口令长,因为它们通常使用短语而不仅仅用一个词。

公钥被写入 ~/.ssh/id_dsa.pub。密钥被写入 ~/.ssh/id_dsa。决不能把密钥出示给任何人,这一点很重要。

2. 使用 chmod 755 ~/.ssh 命令改变你的 .ssh 目录的许可权限。

3. 把 ~/.ssh/id_dsa.pub 的内容复制到你想连接的机器中的 ~/.ssh/authorized_keys 文件中。如果文件 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/id_dsa.pub 文件复制到那个机器上的 ~/.ssh/authorized_keys文件中。

4. 如果你运行的是 GNOME,跳到第 3.4.4 节。如果你没在运行 X 窗口系统,跳到 第 3.4.5 节。

3.4.3. 为版本 1.3 和 1.5 生成 DSA 钥匙对

使用下面的步骤来生成用于 SSH 协议版本 1 的 RSA 钥匙对。如果你只在使用 DSA 的系统间连接,则不需要 RSA 版本 1.3 或 RSA 版本 1.5 钥匙对。

1. 要生成 RSA (版本 1.3 和 1.5 协议)钥匙对,在 shell 提示下键入下列命令:

ssh-keygen -t rsa1

接受默认的位置 (~/.ssh/identity)。输入和你的帐号口令不同的口令句。再输入一次来确认。

公钥被写入 ~/.ssh/identity.pub。密钥被写入 ~/.ssh/identity。不要把你的密钥出示给任何人。

2. 使用 chmod 755 ~/.ssh 和 chmod 644 ~/.ssh/identity.pub 命令改变你的 .ssh 目录和密钥的许可权限。

3. 把 ~/.ssh/identity.pub 的内容复制到你想连接的机器中的 ~/.ssh/authorized_keys 文件中。如果文件 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/identity.pub 文件复制到远程机器上的 ~/.ssh/authorized_keys 文件中。

4. 如果你运行的是 GNOME,跳到第 3.4.4 节。如果你没在运行 GNOME, 跳到第 3.4.5 节。

3.4.4. 在 GNOME 中配置 ssh-agent

ssh-agent 工具可以用来保存你的口令句,因此你不必在每次引发 ssh 或 scp 连接时都输入口令。如果你在使用 GNOME,openssh-askpass-gnome 工具可以用来在你登录到 GNOME 时提示你输入口令句,并把它一直保留到你从 GNOME 中注销之时。你不必为本次 GNOME 会话中任何 ssh 或 scp 连接输入口令或口令句。如果你不打算使用 GNOME,请参阅第 3.4.5 节。

要在 GNOME 会话中保存口令句,遵循下列步骤:

1. 你需要安装 openssh-askpass-gnome 软件包;你可以使用 rpm -q openssh-askpass-gnome 命令来判定该软件包是否已被安装。如果它没有被安装,从你的 Red Hat Linux 光盘集合、Red Hat FTP 镜像站点、或使用 Red Hat 网络 来安装它。

2. 点击「主菜单」(在面板上)=> 「首选项」 => 「更多首选项」 => 「会话」。然后点击「启动程序」标签。点击「增加」,在「启动命令」文本字段内输入 /usr/bin/ssh-add。把它的优先级设为比任何现存命令都高的数字以确保它最后才执行。ssh-add 的优先级数字最好是 70 或更高。优先级数字越高,优先级越低。如果你列出了其它程序,该程序的优先级应该最低。点击「关闭」来退出该程序。

3. 注销后再登录进 GNOME;换一句话说,重新启动 X 服务器。在 GNOME 启动后,一个提示你输入口令句的对话框就会出现。输入要求的口令句。如果你把 DSA 和 RSA 两者都配置了,你会被提示两者都输入。从现在起,你就不会被 ssh、 scp 或 sftp 提示输入口令了。

3.4.5. 配置 ssh-agent

ssh-agent 可以用来储存你的口令句,因此你在每次使用 ssh 或 scp 连接时就不必总是输入它。如果你不在运行 X 窗口系统,则在 shell 提示中遵循这些步骤。如果你在运行 GNOME,但是不想配置它来在你登录时提示你输入口令(参阅第 3.4.4 节),这个过程可以在类似 xterm 的终端窗口中进行。如果你在运行 X 却不是 GNOME,这个过程可以在终端中进行。可是,你的口令只能在该终端窗口中被记住,它不是全局设置。

1. 在 shell 提示下,键入下面的命令:

exec /usr/bin/ssh-agent $SHELL

2. 然后,键入下面的命令:

ssh-add

接着,输入你的口令。如果你配置了不止一个钥匙对,你会被提示输入每个口令。

3. 当你注销后,口令句就会被忘记。你必须在每次登录到虚拟控制台或打开终端窗口时都执行这两条命令。

4. 其它资料

OpenSSH 和 OpenSSL 工程处于不断地开发中,因此关于它们的最新信息通常位于它们的官方网站中。OpenSSH 和 OpenSSL 工具的说明书(man)页也是个获取详细信息的好地方。

4.1. 安装了的文档

* ssh、scp、sftp、sshd 和 ssh-keygen 的说明书(man)页 — 关于它们的说明书页包括如何使用这些命令的信息,以及所有能与它们一起使用的参数。

4.2. 有用的网站

* http://www.openssh.com — OpenSSH FAQ 网页、错误报告、邮件列表、工程宗旨、以及关于安全功能的更技术性的解释。

* http://www.openssl.org — OpenSSL FAQ 网页、邮件列表、以及对于工程宗旨的描述。

* http://www.freessh.org — 用于其它平台的 SSH 客户软件。

分享到:
评论

相关推荐

    使用Go语言实现远程传输文件

    之前有一篇介绍如何使用Go语言通过SSH协议来执行远程命令:如何使用Go语言实现远程执行命令 同样,通过SSH协议也可以使用Go语言来远程传输文件。 除了 SSH 的库,为了传输文件,还需要用到 github.com/pkg/sftp 这个...

    linux远程访问工具secure shell client

    SSH Secure Shell Client是一个用来替代TELNET、FTP以及R命令的数据加密工具,进行ssh ...通过使用SSH,你可以把所有传输的数据进行加密,这样”中间人”这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

    SecureCRT远程访问linux系统

    CRT是一款SSH客户端软件,用于在Windows系统上远程访问Linux/Unix服务器。它可以提供可靠的加密连接和管理多个会话、窗口和协议的功能,支持SSH、Telnet、Rlogin、Serial等多种连接协议。 CRT具有用户友好的界面和...

    Linux使用scp命令进行文件远程拷贝详解

    Linux的scp命令可以在Linux服务器之间复制文件和目录。 使用语法: scp [参数] [源路径] @IP:/目标路径 scp 参数如下: -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用IPv4...

    winsshd_ssh.zip

    WinSSHD 是一款Windows NT/2000/XP/2003下的SSH服务器 支持如下SSH2服务: ...利用SFTP和SCP进行安全的文件传输 安全的TCP/IP连接隧道(端口转发) 还支持Windows的域帐号和公共密匙验证。(共享软件)

    计算机+Linux+NaSarang+XShell7andXftp7+远程登陆+远程上传下载文件(软件+安装过程)

    使用了 Xftp 以后,MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标准的 Windows 风格的向导,它简单的界面能与其他 Windows 应用程序紧密...

    SSH免安装工具

    LINUX操作系统远程访问,远程文件传输,免安装实用工具。

    远程服务器访问软件Xmanager Enterprise 5

    Xmanager Enterprise 5是一款适用于Windows的高级远程访问软件,可以将Windows桌面连接到远程Linux服务器以及...适用于需要在Windows和UNIX / Linux操作系统之间进行文件和数据传输、远程工作和协作的专业人士和企业。

    WinSCP (Windows Secure Copy) 免费开源的广泛用于与Unix和Linux服务器系统的文件交互

    是一个免费、开源的Windows应用程序,主要用于通过SFTP (SSH File Transfer Protocol)、SCP (Secure Copy Protocol)、FTP (File Transfer Protocol) 和WebDAV协议在本地计算机和远程计算机之间安全地传输文件。...

    FTP 文件传输管理工具 FTPGetter Professional 5.97.0.215 中文多语免费版.zip

    本地和远程命令的支持允许自动压缩(tar + gzip),传输和解压缩一堆文件和目录。 SSH 文件传输协议和代理服务器支持 直接或通过 FTP,SOCKS 或 HTTP 代理服务器连接到FTP服务器。 FTPGetter 完全支持安全的 SSL/...

    Termius(Shell)of Mac

    它通过SSH协议提供了远程访问和管理计算机和服务器的功能,可在多种操作系统上运行,包括Windows、macOS、Linux、iOS和Android。 Termius有许多令人印象深刻的功能。首先,它提供了一个安全的连接通道,使用加密...

    SecureCRT统计脚本工具

    此外,SecureCRT具有内置的远程文件传输支持,允许用户在本地系统和远程系统之间安全传输文件。该软件还提供数据隧道服务,允许用户在两个网络设备之间建立安全隧道,并通过隧道安全地传输数据。 总之,SecureCRT是...

    品味树莓派:Raspbian系统配置说明&远程访问(无显示器使用)

    文章目录目的设置方式通过菜单设置配置工具config.txt文件其它设置方式远程访问将树莓派连接到网络无显示器连接无线网获取树莓派IP地址通过SSH访问终端无显示器开启SSH通过SSH访问使用SFTP传输文件使用VNC访问桌面...

    远程访问工具集合 - XShell 5、XFtp 5

    实际开发中,linux服务器是开发小组共享的,正式上线的项目运行在公网,因此程序员需要远程登录到centos进行项目管理或者开发。...使用了 xftp以后,windows 用户能安全的在 unix / linux 和 windows pc 之间传输文件

    Electrem1.18.5,一款很好用的ssh,sftp命令行工具

    electerm中文版是非常受欢迎的终端模拟仿真器,它为用户提供了诸多实用的功能,最大的特点就是支持多个平台,可以跨...支持ssh远程链接和sftp文件传输,相当于xssh和xftp两个软件的集合,但本身可用性较好,强烈推荐。

    xshell7.0安装程序压缩包资源

    Xshell是一款强大的终端模拟器,用于Windows平台下的远程访问和管理Linux/Unix系统。它提供了丰富的功能和便捷的操作界面,使得用户能够快速方便地进行远程连接、文件传输和命令行操作等任务。 Xshell支持多种协议...

    Xshell 7 + Xftp 7 跨平台最佳选择

    Xshell 7支持SSH、Telnet和Serial等协议,可快速、稳定地连接到Linux/Unix和Windows服务器以访问和管理终端。而Xftp 7具有强大的文件传输功能,支持FTP、SFTP以及FIPS 140-2等安全传输协议,以确保文件传输的安全性...

    linux文件共享服务汇总

    1、samba服务器 Windows与Linux文件共享 (主局域网) 1.1samba服务器介绍 1.2samba服务的启动和进程 1.3Samba 配置 1.4samba服务器端常用命令 1.5Samba应用示例一:...4.2远程传输,备份 4.3使用rsync实现增量备份

    远程网络访问安全技术.pptx

    基于终端的远程访问 TELNET rlogin X-Windows 远程网络访问安全技术全文共27页,当前为第2页。 Telnet:连接异种客户端和服务器 23号端口 一个字符一个数据包 服务器验证用户 命令行 远程网络访问安全技术全文共27...

    MobaXterm-Portable-v23.2免安装版

    文件传输:集成了SFTP、SCP、FTP等协议,用户可以方便地传输文件和文件夹,支持拖放操作。 网络工具:内置了多种网络工具,如ping、traceroute、SSH隧道、端口转发等,帮助用户诊断和解决网络问题。 远程任务管理...

Global site tag (gtag.js) - Google Analytics