ssh简单使用
ssh -f [-o 参数项目] [-p 主机端口] [账号]@[主机] [执行的命令]
使用-f 参数执行命令时无需等待命令执行完毕才退出ssh登陆,比如要重启远程主机的正确方法是
ssh -f root@192.168.1.1 root
sftp
sftp [用户名]@[远程主机]
进入之后与一般的ftp 没有差别了,可以使用sftp 完全替代的ftp
scp
如果知道服务器上面的目录结构,可以简单的使用 scp
scp [-pr] [-l 传输速度] file [用户名@][主机名]:目录名 ## 上传文件
scp [-pr] [-l 传输速度] [用户名@][主机名]:目录名 file ## 下载文件
-p: 保存文件的权限信息
-r: 递归复制
使用密钥验证
-
在客服端生成公钥,和私钥
ssh-keygen -t rsa
hy511@HUXOS:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hy511/.ssh/id_rsa): /home/hy511/.ssh/id_rsa_test #输入密钥存放位置 Enter passphrase (empty for no passphrase): #输入密钥使用密码 Enter same passphrase again: #再次输入 Your identification has been saved in /home/hy511/.ssh/id_rsa_test. Your public key has been saved in /home/hy511/.ssh/id_rsa_test.pub. The key fingerprint is: c5:27:4a:76:61:11:67:02:0d:69:94:08:98:d0:f8:ce hy511@HUXOS The key''s randomart image is: +--[ RSA 2048]----+ |.+ o.. o+**oo | |. + . +o.= | | . .o = . | | . o + o | | o S | | E | | | | | | | +-----------------+
-
将公钥传入服务器
scp ~/.ssh/id_rsa_test.pub root@romote:~
-
加入authorized_keys
登陆服务器执行
cat id_rsa_test.pub >> .ssh/authorized_keys
确保.ssh 目录的权限为 0700 authorized_keys 权限为0644
rsync
-
在本机使用rsync几乎与cp 命令是一样的
-
rsync通过ssh将远程目录同步到本地
rsync [-avrlptgoD] [-e ssh] [user@host:/dir] [/local/path/]
-v 查看模式显示更多的信息 -q 安静模式与-v相反 -r 递归复制 -u 仅更新,若目标文件较新则不覆盖 -l 复制连接文件的属性,而不是复制目标源文件的内容 -p 复制是连同文件的属性一并复制 -g 保留源文件的属组 -o 保留源文件的属主 -D 保留源文件的设备属性(Devices) -t 保留源文件的时间参数 -I 忽略更新时间(mtime) -z 在文件传输时,压缩 -e 使用的协议 -a 相当于-rlptgoD
-
通过rsync提供的daemon 来传输,主机启动873端口
客户端使用(两个“:”)rsync -av user@host::/dir/path ./local/path
ssh 端口转发
-
本地转发
ssh -L [本地端口]:127.0.0.1:[远程端口] -N [用户名@][远程主机] 这样访问本地127.0.0.1:[本地端口] 就相当与访问[远程主机]:[远程端口]
-
远程转发
ssh -R [远程端口]:本地主机:[本地端口] -N [用户名@][远程主机] 这样访问远程主机的:[远程端口] 就相当与访问[本地主机]:[本地端口] 具体应用,本地主机在NAT路由之后,可以通过这样的方法使得外网ip能访问本地主机提供的服务
-
动态转发
ssh -D [本地端口] -N [用户名@][远程主机] 相当于在本地端口启用SOCKS 代理
使用ssh传递图形界面窗口
需要服务器支持X11
ssh -X user@host
连接后在终端输入
firefox &
就可以启用服务器上面的firefox 并且在客户端显示firefox的窗口
无需进入终端直接打开firefox
ssh -fXT user&host firefox
在windows可以使用xming 这个程序通过ssh的传递打开linux的窗体程序
不同的机器使用不同的ssh密钥
ssh 连接时将使用你.ssh/目录下面的id_rsa 进行认证。如果你使用其他的名称,比如像 id_rsa_github之类的,就需要使用ssh-add 加入到你的密钥列表里面 。具体操作为:
ssh-agent bash
ssh-add ~/.ssh/id_rsa.pub
而每启动一个ssh-agent 都需要执行相同的步骤。然而可以通过额外的方法使用同一个ssh-agent 为每一个bash命令行代理 。参照Arch Wiki
当然我们还可以使用~/.ssh/config 这个文件制定不同的地址使用不同的密钥进行认证,在这个文件里面还可以制定服务的端口,用户名,等一些信息。
host v5
HostName v5.huxos.me
Port 2823
User huxos
IdentityFile ~/.ssh/id_rsa_myvhost
而这样指定之后 使用ssh v5
就会以huxos 这个用户连接v5.huxos.me 这台主机的2823 端口,并且使用 id_rsa_myvhost 这个密钥文件进行认证,看上去就像使用了一个神奇的别名