首页 | 论坛 | Linux | 博客 | 下载 | 人才 | 培训 | WIKI | 手册 | 图书 | 搜索  
ChinaUnix.net » SCO UNIX » 什么是open-ssh?希望知道的大虾指教一二。

2007-9-17 12:01 lyl2002
什么是open-ssh?希望知道的大虾指教一二。

我要用ssh传输一个文件,要写成一个脚本。但我用ssh IP -l loginname,怎么是一个类似于telnet 得画面,到底怎么用ssh命令来传输文件。
急呀,希望大家来讨论!

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

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

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

2007-9-17 13:23 sdccf
15.2. 配置 OpenSSH 服务器要运行 OpenSSH 服务器,你必须首先确定你安装了正确的 RPM 软件包。[font=NSimsun]openssh-server[/font] 软件包是必不可少的,并且它依赖于 [font=NSimsun]openssh[/font] 软件包的安装与否。
OpenSSH 守护进程使用 [font=NSimsun]/etc/ssh/sshd_config[/font] 配置文件。Red Hat Linux 9 安装的默认配置文件在多数情况下应该足以胜任。如果你想使用没有被默认的 [font=NSimsun]sshd_config[/font] 文件提供的方式来配置守护进程,请阅读 [font=NSimsun]sshd[/font] 的说明书(man)页来获取能够在配置文件中定义的关键字列表。
要启动 OpenSSH 服务,使用 [font=NSimsun]/sbin/service sshd start[/font] 命令。要停止 OpenSSH 服务器,使用 [font=NSimsun]/sbin/service sshd stop[/font] 命令。如果你想让守护进程在引导时自动启动,请参阅[url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/ch-services.html][color=#0066cc]第14章 [/color][/url]来获取关于如何管理服务的信息。
如果你重新安装了 Red Hat Linux 系统,任何在它被重装前使用 OpenSSH 工具连接到这个系统上的客户在它被重装后将会看到下列消息:
[table=98%,#dcdcdc][tr][td]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    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.[/td][/tr][/table]重装后的系统会为自己创建一组新的身份标识钥匙;因此客户会看到 RSA 主机钥匙改变的警告。如果你想保存系统原有的主机钥匙,备份 [font=NSimsun]/etc/ssh/ssh_host*key*[/font] 文件,然后在系统重装后恢复它。该过程会保留系统的身份。当客户机在该系统重装后试图连接它,它们就不会看到以上的警告信息。

15.3. 配置 OpenSSH 客户要从客户机连接到 OpenSSH 服务器上,你必须在客户机器上装有 [font=NSimsun]openssh-clients[/font] 和 [font=NSimsun]openssh[/font] 软件包。
15.3.1. 使用 [font=NSimsun]ssh[/font] 命令[font=NSimsun]ssh[/font] 命令是 [font=NSimsun]rlogin[/font]、[font=NSimsun]rsh[/font] 和 [font=NSimsun]telnet[/font] 命令的安全替换。它允许你在远程机器上登录并在其上执行命令。
使用 [font=NSimsun]ssh[/font] 来登录到远程机器和使用 [font=NSimsun]telnet[/font] 相似。要登录到一个叫做 penguin.example.net 的远程机器,在 shell 提示下键入下面的命令:
[table=98%,#dcdcdc][tr][td]ssh penguin.example.net[/td][/tr][/table]第一次使用 [font=NSimsun]ssh[/font] 在远程机器上登录时,你会看到和下面相仿的消息:
[table=98%,#dcdcdc][tr][td]The authenticity of host 'penguin.example.net' can't 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)? [/td][/tr][/table]键入 [b][font=NSimsun]yes[/font][/b] 来继续。这会把该服务器添加到你的已知主机的列表中,如下面的消息所示:
[table=98%,#dcdcdc][tr][td]Warning: Permanently added 'penguin.example.net' (RSA) to the list of known hosts.[/td][/tr][/table]下一步,你会看到向你询问远程主机口令的提示。在输入口令后,你就会在远程主机的 shell 提示下了。如果你没有指定用户名,你在本地客户机器上登录用的用户名就会被传递给远程机器。如果你想指定不同的用户名,使用下面的命令:
[table=98%,#dcdcdc][tr][td]ssh [i]username[/i]@penguin.example.net[/td][/tr][/table]你还可以使用 [font=NSimsun]ssh -l [i]username[/i] penguin.example.net[/font]。
[font=NSimsun]ssh[/font] 命令可以用来在远程机器上不经 shell 提示登录而执行命令。它的语法格式是: [font=NSimsun]ssh [i]hostname[/i] [i]command[/i][/font]。譬如,如果你想在远程主机 penguin.example.net 上执行 [font=NSimsun]ls /usr/share/doc[/font] 命令,在 shell 提示下键入下面的命令:
[table=98%,#dcdcdc][tr][td]ssh penguin.example.net ls /usr/share/doc[/td][/tr][/table]在你输入了正确的口令之后, [font=NSimsun]/usr/share/doc[/font] 这个远程目录中的内容就会被显示,然后你就会被返回到你的本地 shell 提示下。

15.3.2. 使用 [font=NSimsun]scp[/font] 命令[font=NSimsun]scp[/font] 命令可以用来通过安全、加密的连接在机器间传输文件。它与 [font=NSimsun]rcp[/font] 相似。
把本地文件传输给远程系统的一般语法是:
[table=98%,#dcdcdc][tr][td]scp [i]localfile[/i] [i]username@tohostname:/newfilename[/i][/td][/tr][/table][i][font=NSimsun]localfile[/font][/i] 指定源文件,[i][font=NSimsun]username@tohostname:/newfilename[/font][/i] 指定目标文件。
要把本地文件 [font=NSimsun]shadowman[/font] 传送到你在 penguin.example.net 上的账号内,在 shell 提示下键入(把 [i][font=NSimsun]username[/font][/i] 替换成你的用户名):
[table=98%,#dcdcdc][tr][td]scp shadowman [i]username[/i]@penguin.example.net:/home/[i]username[/i][/td][/tr][/table]这会把本地文件 [font=NSimsun]shadowman[/font] 传输给 penguin.example.net 上的 [font=NSimsun]/home/[i]username[/i]/shadowman[/font] 文件。
把远程文件传输给本地系统的一般语法是:
[table=98%,#dcdcdc][tr][td]scp [i]username@tohostname:/remotefile[/i] [i]/newlocalfile[/i][/td][/tr][/table][i][font=NSimsun]remotefile[/font][/i] 指定源文件,[i][font=NSimsun]newlocalfile[/font][/i] 指定目标文件。
源文件可以由多个文件组成。譬如,要把目录 [font=NSimsun]/downloads[/font] 的内容传输到远程机器 penguin.example.net 上现存的 [font=NSimsun]uploads[/font] 目录,在 shell 提示下键入下列命令:
[table=98%,#dcdcdc][tr][td]scp /downloads/* [i]username[/i]@penguin.example.net:/uploads/[/td][/tr][/table]
15.3.3. 使用 [font=NSimsun]sftp[/font] 命令[font=NSimsun]sftp[/font] 工具可以用来打开一次安全互动的 FTP 会话。它与 [font=NSimsun]ftp[/font] 相似, 只不过,它使用安全、加密的连接。它的一般语法是:[i][font=NSimsun]sftp [email]username@hostname.com[/email][/font][/i]。一旦通过 验证,你可以使用一组和使用 FTP 相似的命令。请参阅 [font=NSimsun]sftp[/font] 的说明书页(man)来获取这些 命令的列表。要阅读说明书页,在 shell 提示下执行 [font=NSimsun]man sftp[/font] 命令。[font=NSimsun]sftp[/font] 工具只在 OpenSSH 版本 2.5.0p1 以上才有。

15.3.4. 生成钥匙对如果你不想每次使用 [font=NSimsun]ssh[/font]、[font=NSimsun]scp[/font] 或 [font=NSimsun]sftp[/font] 时都要输入口令来连接远程机器,你可以生成一对授权钥匙。
钥匙必须为每个用户生成。要为某用户生成钥匙,用想连接到远程机器的用户身份来遵循下面的步骤。如果你用根用户的身份完成了下列步骤,就只有根用户才能使用这对钥匙。
从 OpenSSH 版本 3.0 开始,[font=NSimsun]~/.ssh/authorized_keys2[/font]、[font=NSimsun]~/.ssh/known_hosts2[/font] 和 [font=NSimsun]/etc/ssh_known_hosts2[/font] 就会过时。SSH 协议 1 和 2 共享 [font=NSimsun]~/.ssh/authorized_keys[/font]、[font=NSimsun]~/.ssh/known_hosts[/font] 和 [font=NSimsun]/etc/ssh/ssh_known_hosts[/font] 文件。
Red Hat Linux 9 默认使用 SSH 协议 2 和 RSA 钥匙。

[table=98%][tr][td=1,1,25][img]http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/stylesheet-images/tip.png[/img][/td][b]窍门[/b][/tr][tr][td] [/td][td]如果你重装了 Red Hat Linux,但是想保留现有的钥匙对,备份你的主目录中的 [font=NSimsun].ssh[/font] 目录。重装后,把该目录复制回主目录。该进程可为系统上的所有用户进行,包括根用户。
[/td][/tr][/table]
15.3.4.1. 为版本 2 生成 RSA 钥匙对使用下列步骤来为 SSH 协议的版本 2 生成 RSA 钥匙对。从 OpenSSH 2.9 开始,它已成为默认设置。

[list=1][*]要生成 RSA 钥匙对与协议的版本 2 合作,在 shell 提示下键入下列命令:
[table=90%,#dcdcdc][tr][td]ssh-keygen -t rsa[/td][/tr][/table]接受 [font=NSimsun]~/.ssh/id_rsa[/font] 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。
公钥被写入 [font=NSimsun]~/.ssh/id_rsa.pub[/font]。密钥被写入 [font=NSimsun]~/.ssh/id_rsa[/font]。决不能把密钥出示给任何人。
[*]使用 [font=NSimsun]chmod 755 ~/.ssh[/font] 命令改变你的 [font=NSimsun].ssh[/font] 目录的许可权限。
[*]把 [font=NSimsun]~/.ssh/id_rsa.pub[/font] 的内容复制到你想连接的机器上的 [font=NSimsun]~/.ssh/authorized_keys[/font] 文件中。如果 [font=NSimsun]~/.ssh/authorized_keys[/font] 不存在,你可以把 [font=NSimsun]~/.ssh/id_rsa.pub[/font] 文件复制到那个机器上的 [font=NSimsun]~/.ssh/authorized_keys[/font] 文件中。
[*]如果你运行的是 GNOME,跳到[url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/s1-openssh-client-config.html#S3-OPENSSH-SSH-AGENT-WITH-GNOME][color=#0066cc]第 15.3.4.4 节[/color][/url]。如果你没在运行 X 窗口系统,跳到[url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/s1-openssh-client-config.html#S3-OPENSSH-CONFIG-SSH-AGENT][color=#0066cc]第 15.3.4.5 节[/color][/url]。
[/list]
15.3.4.2. 为版本 2 生成 DSA 钥匙对使用下面的步骤来为 SSH 协议的版本 2 生成 DSA 钥匙对。

[list=1][*]要生成用于协议的版本 2 的 DSA 钥匙对,在 shell 提示下键入下面的命令:
[table=90%,#dcdcdc][tr][td]ssh-keygen -t dsa[/td][/tr][/table]接受 [font=NSimsun]~/.ssh/id_dsa[/font] 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。

[table=90%][tr][td=1,1,25][img]http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/stylesheet-images/tip.png[/img][/td][b]窍门[/b][/tr][tr][td] [/td][td]口令句是用来验证用户的一串词汇和字符。 口令句和一般口令的不同之处在于:在口令句中你可以使用空格或制表符。口令句通常比一般口令长,因为它们通常使用短语而不仅仅用一个词。
[/td][/tr][/table]
公钥被写入 [font=NSimsun]~/.ssh/id_dsa.pub[/font]。密钥被写入 [font=NSimsun]~/.ssh/id_dsa[/font]。决不能把密钥出示给任何人,这一点很重要。
[*]使用 [font=NSimsun]chmod 755 ~/.ssh[/font] 命令改变你的 [font=NSimsun].ssh[/font] 目录的许可权限。
[*]把 [font=NSimsun]~/.ssh/id_dsa.pub[/font] 的内容复制到你想连接的机器中的 [font=NSimsun]~/.ssh/authorized_keys[/font] 文件中。如果文件 [font=NSimsun]~/.ssh/authorized_keys[/font] 不存在,你可以把 [font=NSimsun]~/.ssh/id_dsa.pub[/font] 文件复制到那个机器上的 [font=NSimsun]~/.ssh/authorized_keys[/font]文件中。
[*]如果你运行的是 GNOME,跳到[url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/s1-openssh-client-config.html#S3-OPENSSH-SSH-AGENT-WITH-GNOME][color=#0066cc]第 15.3.4.4 节[/color][/url]。如果你没在运行 X 窗口系统,跳到 [url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/s1-openssh-client-config.html#S3-OPENSSH-CONFIG-SSH-AGENT][color=#0066cc]第 15.3.4.5 节[/color][/url]。
[/list]
15.3.4.3. 为版本 1.3 和 1.5 生成 DSA 钥匙对使用下面的步骤来生成用于 SSH 协议版本 1 的 RSA 钥匙对。如果你只在使用 DSA 的系统间连接,则不需要 RSA 版本 1.3 或 RSA 版本 1.5 钥匙对。

[list=1][*]要生成 RSA (版本 1.3 和 1.5 协议)钥匙对,在 shell 提示下键入下列命令:
[table=90%,#dcdcdc][tr][td]ssh-keygen -t rsa1[/td][/tr][/table]接受默认的位置 ([font=NSimsun]~/.ssh/identity[/font])。输入和你的帐号口令不同的口令句。再输入一次来确认。
公钥被写入 [font=NSimsun]~/.ssh/identity.pub[/font]。密钥被写入 [font=NSimsun]~/.ssh/identity[/font]。不要把你的密钥出示给任何人。
[*]使用 [font=NSimsun]chmod 755 ~/.ssh[/font] 和 [font=NSimsun]chmod 644 ~/.ssh/identity.pub[/font] 命令改变你的 [font=NSimsun].ssh[/font] 目录和密钥的许可权限。
[*]把 [font=NSimsun]~/.ssh/identity.pub[/font] 的内容复制到你想连接的机器中的 [font=NSimsun]~/.ssh/authorized_keys[/font] 文件中。如果文件 [font=NSimsun]~/.ssh/authorized_keys[/font] 不存在,你可以把 [font=NSimsun]~/.ssh/identity.pub[/font] 文件复制到远程机器上的 [font=NSimsun]~/.ssh/authorized_keys[/font] 文件中。
[*]如果你运行的是 GNOME,跳到[url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/s1-openssh-client-config.html#S3-OPENSSH-SSH-AGENT-WITH-GNOME][color=#0066cc]第 15.3.4.4 节[/color][/url]。如果你没在运行 GNOME, 跳到[url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/s1-openssh-client-config.html#S3-OPENSSH-CONFIG-SSH-AGENT][color=#0066cc]第 15.3.4.5 节[/color][/url]。
[/list]
15.3.4.4. 在 GNOME 中配置 [font=NSimsun]ssh-agent[/font][font=NSimsun]ssh-agent[/font] 工具可以用来保存你的口令句,因此你不必在每次引发 [font=NSimsun]ssh[/font] 或 [font=NSimsun]scp[/font] 连接时都输入口令。如果你在使用 GNOME,[font=NSimsun]openssh-askpass-gnome[/font] 工具可以用来在你登录到 GNOME 时提示你输入口令句,并把它一直保留到你从 GNOME 中注销之时。你不必为本次 GNOME 会话中任何 [font=NSimsun]ssh[/font] 或 [font=NSimsun]scp[/font] 连接输入口令或口令句。如果你不打算使用 GNOME,请参阅[url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/s1-openssh-client-config.html#S3-OPENSSH-CONFIG-SSH-AGENT][color=#0066cc]第 15.3.4.5 节[/color][/url]。
要在 GNOME 会话中保存口令句,遵循下列步骤:

[list=1][*]你需要安装 [font=NSimsun]openssh-askpass-gnome[/font] 软件包;你可以使用 [font=NSimsun]rpm -q openssh-askpass-gnome[/font] 命令来判定该软件包是否已被安装。如果它没有被安装,从你的 Red Hat Linux 光盘集合、Red Hat FTP 镜像站点、或使用 Red Hat 网络 来安装它。
[*]点击[b]「主菜单」[/b](在面板上)=> [b]「首选项」[/b] => [b]「更多首选项」[/b] => [b]「会话」[/b]。然后点击[b]「启动程序」[/b]标签。点击[b]「增加」[/b],在[b]「启动命令」[/b]文本字段内输入 [b][font=NSimsun]/usr/bin/ssh-add[/font][/b]。把它的优先级设为比任何现存命令都高的数字以确保它最后才执行。[font=NSimsun]ssh-add[/font] 的优先级数字最好是 70 或更高。优先级数字越高,优先级越低。如果你列出了其它程序,该程序的优先级应该最低。点击[b]「关闭」[/b]来退出该程序。
[*]注销后再登录进 GNOME;换一句话说,重新启动 X 服务器。在 GNOME 启动后,一个提示你输入口令句的对话框就会出现。输入要求的口令句。如果你把 DSA 和 RSA 两者都配置了,你会被提示两者都输入。从现在起,你就不会被 [font=NSimsun]ssh[/font]、 [font=NSimsun]scp[/font] 或 [font=NSimsun]sftp[/font] 提示输入口令了。
[/list]
15.3.4.5. 配置 [font=NSimsun]ssh-agent[/font][font=NSimsun]ssh-agent[/font] 可以用来储存你的口令句,因此你在每次使用 [font=NSimsun]ssh[/font] 或 [font=NSimsun]scp[/font] 连接时就不必总是输入它。如果你不在运行 X 窗口系统,则在 shell 提示中遵循这些步骤。如果你在运行 GNOME,但是不想配置它来在你登录时提示你输入口令(参阅[url=http://docs.huihoo.com/redhat/rhl-cg-zh_CN-9/s1-openssh-client-config.html#S3-OPENSSH-SSH-AGENT-WITH-GNOME][color=#0066cc]第 15.3.4.4 节[/color][/url]),这个过程可以在类似 xterm 的终端窗口中进行。如果你在运行 X 却不是 GNOME,这个过程可以在终端中进行。可是,你的口令只能在该终端窗口中被记住,它不是全局设置。

[list=1][*]在 shell 提示下,键入下面的命令:
[table=90%,#dcdcdc][tr][td]exec /usr/bin/ssh-agent $SHELL[/td][/tr][/table][*]然后,键入下面的命令:
[table=90%,#dcdcdc][tr][td]ssh-add [/td][/tr][/table]接着,输入你的口令。如果你配置了不止一个钥匙对,你会被提示输入每个口令。
[*]当你注销后,口令句就会被忘记。你必须在每次登录到虚拟控制台或打开终端窗口时都执行这两条命令。
[/list]

2007-9-18 11:31 lyl2002
看过了,太感谢楼上了!但是没有windows的,我现在是sco unixware与windows 的通讯,windows的看不懂,还望指教一二。

[[i] 本帖最后由 lyl2002 于 2007-9-18 12:12 编辑 [/i]]

2007-9-18 13:13 saintdragon
老版主搜集的资料还是多呀!

页: [1]