SSH 登陆LINUX服务器常用命令远程维护Linux服务器,使用SSH(secure shell)。
登陆:ssh [hostname] -u user输入密码:*****登陆以后就可以像控制自己的机器一样控制它了,不过没有可视化的界面。
不过现在我所使用过的两个版本Linux(SUSE和FC5)中有可以使用类似FTP界面的工具。
使用工具连接时,选择SSH,端口是填服务器的SSH端口,默认是22,但是还是要手工填写。
连接上以后FTP 界面和shell同时使用可以提高工作效率。
简单的传输命令:scpscp /etc/php.ini user@:/home/user会将本地的/etc/php.ini 这个文件copy 到,使用者user的主目录下执行命令之后需要输入密码,只后就开始传送。
scp user@:/etc/php.ini /home/user2将主机 上的/etc/php.ini文件copy到本地/home/user2目录下ssh –l user –p 22 输入密码即可登录l login_name指定登入于远程机器上的使用者,若没加这个选项,而直接打ssh lost 也是可以的,它是以读者目前的使用者去做登入的动作。
例如:ssh –l root ===================================================-c blowfish|3des在期间内选择所加密的密码型式。
预设是3des,3des(作三次的资料加密) 是用三种不同的密码键作三次的加密-解密-加密。
blowfish 是一个快速区块密码编制器,它比3des更安全以及更快速。
===================================================-vV erbose 模式。
使ssh 去印出关于行程的除错讯息,这在连接除错,认证和设定的问题上有很的帮助。
===================================================-f要求ssh 在背景执行命令,假如ssh要询问密码或通行证,但是使用者想要它在幕后执行就可以用这个方式,最好还是加上-l user 例如在远程场所上激活X11,有点像是ssh –f host xterm 。
===================================================-i identity_file选择所读取的RSA认证识别的档案。
预设是在使用者的家目录中的.ssh/identity===================================================-n重导stdin 到/dev/null (实际上是避免读取stdin)。
必须当ssh 在幕后执行时才使用。
常见的招数是使用这选项在远程机器上去执行X11 的程序例如,ssh -n shadows.cs.hut.fi emacs &,将在shadows.cs.hut.fi 上激活emace,并且X11 连接将自动地在加密的信道上发送。
ssh 程序将把它放在幕后。
(假如ssh需要去询问密码时,这将不会动作)===================================================-t强制配置pseudo-tty。
这可以在远程机器上去执行任意的screen-based 程式,例如操作menu services。
===================================================-C要求压缩所有资料(包含stdin, stdout,stderr 和X11 和TCP/IP 连接) 压缩演算规则与gzip 相同,但是压缩的等级不能控制。
在调制解调器或联机速度很慢的地方,压缩是个很好的选择,但如果读者的网络速路很快的话,速度反而会慢下来。
=====================================================-p port连接远程机器上的port。
不用这个选项,默认就是22======================================================-P使用非特定的port 去对外联机。
如果读者的防火墙不淮许从特定的port去联机时,就可以使用这个选项。
注意这个选项会关掉RhostsAuthentication 和RhostsRSAAuthentication。
=====================================================-L listen-port:host:port指派本地的port 到达端机器地址上的port。
====================================================-R listen-port:host:port指派远程上的port 到本地地址上的port。
-2 强制ssh 去使用协议版本2。
-4 强制ssh 去使用IPv4 地址。
-6 强制ssh 去使用IPv6 地址。
=====================================================-g允许远程主机去连接本地指派的ports。
-a关闭认证代理联机。
-e character设定跳脱字符scp 使用scp 在远程机器上copy 档案======================================================copy 本地的档案到远程的机器上scp /etc/lilo.conf my@:/home/my会将本地的/etc/lilo.conf 这个档案copy 到,使用者my 的家目录下。
=====================================================copy远程机器上的档案到本地来scp my@:/etc/lilo.conf /etc会将 中/etc/lilo.conf 档案copy 到本地的/etc 目录下。
=====================================================保持从来源host 档案的属性scp –p my@:/etc/lilo.conf /etcssh-keygen产生公开钥(pulib key) 和私人钥(private key),以保障ssh 联机的安性.当ssh 连shd 服务器,会交换公开钥上,系统会检查/etc/ssh_know_hosts 内储存的key,如果找到客户端就用这个key 产生一个随机产生的session key 传给服务器,两端都用这个key 来继续完成ssh 剩下来的阶段。
它会产生identity.pub、identity 两个档案,私人钥存放于identity,公开钥存放于identity.pub 中,接下来使用scp 将identity.pub copy 到远程机器的家目录下.ssh下的authorized_keys。
.ssh/authorized_keys(这个authorized_keys 档案相当于协议的rhosts 档案),之后使用者能够不用密码去登入。
RSA的认证绝对是比rhosts 认证更来的安全可靠。
执行:scp identity.pub my@:.ssh/authorized_keys若在使用ssh-keygen 产生钥匙对时没有输入密码,则如上所示不需输入密码即可从去登入。
在此,这里输入的密码可以跟帐号的密码不同,也可以不输入密码。
SSH protocol version 1:每一部主机都可以使用RSA加密方式来产生一个1024-bit 的RSA Key ,这个RSA的加密方式,主要就是用来产生公钥与私钥的演算方法!这个version 1 的整个联机的加密步骤可以简单的这么看:1. 当每次SSH daemon (sshd) 激活时,就会产生一支768-bit 的公钥(或称为server key)存放在Server 中;2. 若有client 端的需求传送来时,那么Server 就会将这一支公钥传给client ,而Client 藉由比对本身的RSA加密方式来确认这一支公钥;3. 在Client 接受这个768-bit 的server key 之后,Client 自己也会随机产生一支256-bit 的私钥(host key),并且以加密的方式将server key 与host key 整合成一支完整的Key ,并且将这支Key 也传送给server ;4. 之后,Server 与Client 在这次的联机当中,就以这一支1024-bit 的Key 来进行资料的传递!当然啦,因为Client 端每次的256-bit 的Key 是随机取的,所以你这次的联机与下次的联机的Key 就会不一样啦!==============================================SSH protocol version 2:与version 1 不同的是,在version 2 当中将不再产生server key 了,所以,当Client 端联机到Server 端时,两者将藉由Diffie-Hellman key 的演算方式来产生一个分享的Key ,之后两者将藉由类似Blowfish 的演算方式进行同步解密的动作!每一个sshd 都提供这两个版本的联机,而决定这两种模式联机的,就必需要在client 端联机时选择联机的模式才能确认。
目前预设情况下,会自动使用version 2 的联机模式喔!而由于我们的联机资料中,经过了这个Public 与Private Key 的加密、解密动作,所以在中间的传送过程中,当然就比较安全的多啰!如果直接以ssh hostname 来连接进入hostname 这个主机时,则进入hostname 这个主机的『帐号名称』将会是目前你所在的这个环境当中的使用者帐号!以上面为例,因为我是以root 的身份在执行,所以如果我执行了『ssh 』时,那么对方 这部主机,就会以root 的身份来让我进行密码确认的登入动作!因此,为了避免这样的麻烦,通常我都是以简单的e-mail 的写法来登入远方的主机,例如『sshuser@hostname 』即表示,我是以user 这个帐号去登入hostname 这部主机的意思。
当然,也可以使用-l username 这样的形式来书写!登入对方主机之后,其它的所有执行行为都跟在Linux 主机内没有两样~所以,真的是很简单吧!^_^ 这样就可以达到远程控管主机的目的了!此外,在预设的情况下,SSH 是『允许你以root 的身份登入』喔!呵呵!更是爽快啦!此外,请特别留意的是,当您要连接到对方的主机时,如果是首次连接,那么Server 会问你,你的联机的Key 尚未被建立,要不要接受Server 传来的Key ,并建立起联机呢?呵呵!这个时候请『务必要输入yes 而不是y 或Y』,这样程序才会接受sftp -l username hostname 或者sftp user@hosname进入到sftp 之后,那就跟在一般FTP 模式下的操作方法没有两样cdls dirmkdirrmdirpwdchgrpchownchmodln oldname newnamerm pathrename oldname newnameexit bye===================================lcd pathllslmkdirlpwdput [local] [remote]get [remote] [local]SSH命令使用技巧.txt一前言关于ssh 的好处, 相信不用我多说了吧?简而言之, 之前的rpc command 与telnet 都全可用ssh 代替.比方如下的这些常见功能:- 远程登录ssh user@remote.machine- 远程执行ssh user@remote.machine 'command ...'- 远程复制scp user@remote.machine:/remote/path /local/pathscp /local/path user@remote.machine:/remote/path- X forwardssh -X user@remote.machinexcommand ...- Tunnel / Portforwardssh -L 1234:remote.machine:4321 user@remote.machinessh -R 1234:local.machine:4321 user@remote.machinessh -L 1234:other.machine:4321 user@remote.machine二, 实作1) 禁止root 登录# vi /etc/ssh/sshd_configPermitRootLogin no2) 废除密码登录, 强迫使用RSA验证(假设ssh 账户为user1 )# vi /etc/ssh/sshd_configRSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysPasswordAuthentication no# service sshd restart# su - user1$ mkdir ~/.ssh 2>/dev/null$ chmod 700 ~/.ssh$ touch ~/.ssh/authorized_keys$ chmod 644 ~/.ssh/authorized_keys--------------------------------------------------转往client 端:$ ssh-keygen -t rsa(按三下enter 完成﹔不需设密码,除非您会用ssh-agent 。