ssh命令:连接登录或执行命令
ssh user@service:port option command #隐式的指定用户名和端口号
ssh service:port -l user option command #隐式的指定端口号
ssh service -p port -l user option command
-b bind_address:绑定本地IP,当本地有多快网卡的时候绑定指定网卡
-D [bind_address:]port:绑定本地IP和端口号,当本地有多快网卡的时候绑定指定网卡
-E log_file:指定本地ssh日志文件
-e escape_char:转义符
-F configfile:配置文件
-l login_name:登录的用户名
-p port:指定目标服务器ssh服务端口号
-i identity_file:指定本地的秘钥文件
ssh-keygen命令:本地生成秘钥公钥对
ssh-keygen [-q] [-b bits] [-t type] [-N new_passphrase] [-C comment] [-f output_keyfile]
-q:安静模式,不显示额外的生成信息
-b:指定秘钥长度,RSA密钥最小768位,默认2048位。DSA密钥必须是1024位(FIPS 186-2标准的要求)
-t:指定密钥类型。可用的值:dsa|ecdsa|ed25519|rsa, 默认rsa。
-N:指定生成秘钥公钥对的密码,不指定会在生成过程中要求输入。
-C:指定秘钥公钥对的说明信息
-f:指定生成密钥的目录和文件名,不指定会在生成过程中要求输入。
ssh-keygen命令的其他用法:
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]:修改秘钥公钥对的密码
ssh-keygen -i [-m key_format] [-f input_keyfile]:读取未加密的SSH-2兼容的私钥/公钥文件,用于从多种商业版本的SSH中导入密钥。
ssh-keygen -e [-m key_format] [-f input_keyfile]:读取OpenSSH的私钥或公钥文件,为多种商业版本的 SSH 输出密钥。
ssh-keygen -y [-f input_keyfile]:读取OpenSSH专有格式的公钥文件。
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]:修改私钥和公钥文件中的注释
ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]:显示公钥文件的指纹数据。
ssh-keygen -B [-f input_keyfile]:显示指定的公钥/私钥文件的 bubblebabble 摘要
ssh-keygen -F hostname [-f known_hosts_file] [-l]:在known_hosts文件中搜索指定的hostname,并列出所有的匹配项。
ssh-keygen -H [-f known_hosts_file]:对known_hosts文件进行散列计算。把文件中的所有主机名/ip地址替换为相应的散列值。原文件的内容将会添加一个".old"后缀后保存。
ssh-keygen -R hostname [-f known_hosts_file]:从known_hosts文件中删除所有属于hostname的密钥。
ssh-keygen -r hostname [-f input_keyfile] [-g]:打印名为hostname的公钥文件的SSHFP指纹资源记录
生成命令
# 直接确认下一步
ssh-keygen -t rsa -b 2048 -v
# 或者:添加备注
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 指定文件名称:
ssh-keygen -t rsa -b 4096 -v -f develop
# 查看生成的密钥对:
ls ~/.ssh/
# 将私钥重命名至id_rsa.pem:
mv ~/.ssh/id_rsa ~/.ssh/id_rsa.pem
# 修改~/.ssh/目录权限:
chmod 700 ~/.ssh/
# 将id_rsa.pub文件内容重定向至authorized_keys文件:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改authorized_keys文件权限:
chmod 600 ~/.ssh/authorized_keys
# 修改远程服务器配置
# sudo vim /etc/ssh/sshd_config
修改完成后如下:
AuthorizedKeysFile .ssh/authorized_keys
RSAAuthentication yes
PubkeyAuthentication yes
# 重启ssh服务:
systemctl restart sshd.service
# 注意: ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名字@192.168.x.xxx
# 例如:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.18.5.128
ssh-copy-id命令
ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。
# 命令详情
ssh-copy-id [-i [identity_file]] [user@]machine
# 使用案例
ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
问题描述: ssh秘钥对只剩下了私钥,如何用私钥来生成对应的公钥?
解决方案:用git bash输入 ssh-keygen指令
ssh-keygen -y -f [private-key-path] > [output-path]
例如:我有一个叫id_rsa的私钥,想用他生成id_rsa.pub公钥,则如下
ssh-keygen -y -f id_rsa > id_rsa.pub
实际案例
# 生成密钥对
ssh-keygen -t rsa -b 4096 -v -f privatekey
ssh-keygen -y -f privatekey.pem > id_rsa.pub
# gateway
ssh-copy-id -i /opt/chores/sshkey/privatekey.pub -p 22 root@10.128.117.99
# system
ssh-copy-id -i /opt/chores/sshkey/privatekey.pub -p 22 root@10.128.117.101
# nservice
ssh-copy-id -i /opt/chores/sshkey/privatekey.pub -p 22 root@10.128.117.102
# file
ssh-copy-id -i /opt/chores/sshkey/privatekey.pub -p 22 root@10.128.117.103
# 免密登录
ssh -p '22' -i /opt/chores/sshkey/privatekey.pem 'root@10.128.117.99'
ssh -p '22' -i /opt/chores/sshkey/privatekey.pem 'root@10.128.117.101'
ssh -p '22' -i /opt/chores/sshkey/privatekey.pem 'root@10.128.117.102'
ssh -p '22' -i /opt/chores/sshkey/privatekey.pem 'root@10.128.117.103'
# scp 传输
scp -P 22 -i /opt/chores/sshkey/privatekey.pem ./javajar-1.0.0.jar root@10.128.117.102:/home/sywn/
# 同步文件传输
rsync -av --delete -e 'ssh -p 22 -i /opt/chores/sshkey/privatekey.pem ' /home/sywn/ root@10.128.117.102:/home/sywn/
网友评论