Skip to content

windows自带scp命令

shell
SCP  -r  windows文件夹路径/*   linux系统登录名@linux IP 地址:Linux路径
scp -r blog.tar.gz root@192.168.0.1:/www/wwwroot/blog.hellocode.vip

-r 代表递归执行,文件夹中有可能存在子文件夹,加上 -r 都会传递过去
window文件夹路径/* 代表 windows 文件夹下的所有文件/子文件夹
linux 系统登录名,比如:root
linux IP 地址,比如:192.168.136.134
linux 路径,比如:/root/home/webapp


SCP -r  D:/Project/Publish/WuAnFundPingtai/* root@192.168.136.134:/root/share/webapp  --整个文件夹内文件,包含子文件夹
SCP  D:\downloads\kafka_2.12-3.0.0.tgz  root@192.168.182.130:/root/software   --单个文件

scp免密登录

廖姥爷新方法:

sh
cd ~/.ssh #发布服务器
ssh-copy-id -i id_dsa.pub root@###远程服务器id###  #将发布服务器的密钥复制在服务器 id_ed25519.pub也行
ssh root@###id###  //测试

ps: 在远程服务器id需要生成 ssh-keygen -t rsa -C "1919193@qq.com",然后git pull 的命令远程服务器id才不需要git输入密码

ps: 配置 ssh key 后 git 拉取代码一直提示输入用户名、密码问题,git remote -v 发现是https,需要改回ssh://链接,

sh
git remote set-url origin <新的远程仓库URL>

编辑 /etc/ssh/ssh_config 添加以下设置可解决这个问题:

让Mac终端保持(SSH)与远程的连接状态

bash
# 断开时重试连接的次数
ServerAliveCountMax 5
# 每隔5秒自动发送一个空的请求以保持连接
ServerAliveInterval 60

Linux 和 Unix 系统中用于将本地 SSH 公钥复制到远程服务器上的命令。

具体来说,该命令会使用本地 id_dsa.pub 文件中的公钥,将其复制到远程服务器的 authorized_keys 文件中。这样,当远程服务器上的用户尝试使用 SSH 进行身份验证时,就会检查 authorized_keys 文件中的公钥,如果与本地公钥匹配,则允许该用户登录。

该命令的参数说明如下:

  • -i: 指定要复制的公钥文件,即 id_dsa.pub
  • root@###远程服务器id###: 指定远程服务器的用户名和 IP 地址或域名。

执行该命令后,远程服务器上的 authorized_keys 文件中将会添加一行公钥,即本地的 id_dsa.pub 文件内容。这样,远程服务器上的用户就可以使用该公钥进行身份验证,从而登录到远程服务器。

2.旧方法 git 生成方法

生成服务器公钥私钥文件 在主机A上执行如下命令来生成配对密钥(id_rsa,id_rsa.pub):

ssh-keygen -t rsa -C "1919193@qq.com"
  1. .shh 目录并修改文件名authorized_keys

image-20221211182050962

  1. 放上id_rsa.pub的内容

// 没做免密登录问题

Host key verification failed.

在windows运行sh命令

1.在电脑环境变量加入git

D:\dev\Git\bin

image-202212F11194911890

在vscode 无法运行其他命令行

无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

shell
node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ node -v
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (node:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

image-20221211183248762

powershell
Set-ExecutionPolicy RemoteSigned #设置当前用户作用域具备权限,具体设置格
shell
Get-ExecutionPolicy -List #查看当前所有作用域

重启电脑才生效

image-20221211183337581

ps:重启终端

window脚本

不用jenkins 自动部署前景:

服务器 npm run build 命令 无法打包成功,内存不够..导致程序卡住太久,服务器自动killed 杀死

image-20221211183602384

mac免密登陆

于是选择用mac自带的终端来访问远程服务器

ssh远程访问登陆,有二种登陆方法:

  • ssh服务器ip,输入用户名+密码+验证码
  • 密钥验证(无需输入任何登陆信息,只需ssh直接进入服务器ip
2.1本地终端生成密钥并将公钥发给服务器,服务器将公钥保存
2.2本地终端登录服务器时,服务器生成随机字符串并用本地的公钥加密后,发给本地终端
2.3本地终端用私钥将其解密后发回给服务器,验证成功后,就可以登陆了

在这里插入图片描述

1.用户名+密码

第一种就很简单了直接输入命令

ssh -p [端口号] [username]@[ip]

之后,按提示输入密码,验证码就可以了。

如果要从服务器端退出到本地 输入命令

exit

2.远程免密

🍎2.1 在本地输入如下命令:

ssh-keygen -t rsa

按三次回车,完成生成本地私钥和公钥

在这里插入图片描述

🍏然后在本地root目录下,找到隐藏文件夹/root/.ssh/目录,可以找到刚才生成的私钥与公钥。

在这里插入图片描述

🍐同样在本地终端ssh文件夹目录上输入命令

	ssh-copy-id [服务器ip]
	ssh-copy-id root@ip

在这里插入图片描述

🍊这个时候就成功将本地的公钥给到了服务器,在服务器的.ssh/authorized_keys

👍最后我们只需要在本地终端如下输入命令,就ok了

ssh [usename]@[ip]

ps: 不用在输入密码就是成功

3.远程文件传输

3.1 本地文件复制到服务器上 进入本地终端在对应目录下:我这里选的是data目录下的image.jpg文件,复制到服务器的data目录下。

[username]@ip:/data/ :表示的是服务器的地址 /User/data:表示的是本地的地址

scp  /User/data/image.jpg [username]@ip:/data/
3.2 服务器文件复制到本地上

同样也是在本地终端下进行:反过来我选择服务器data目录下的image.jpg文件,复制到本地的data目录下。

bash
scp [username]@ip:/data/ /User/data/image.jpg

shell

shell
#!/usr/bin/env sh
# echo 打印出当前目录 CURRENT_PATH
CURRENT_PATH=`pwd`
PUSH_IP="192.168.0.1"   #服务器IP
EXCUTE_PATH="/www/wwwroot/blog.hellocode.vip"   #服务器上传位置路径
#PROJECT_PATH="blog" 
GENERATE_PATH="docs/.vuepress"    # 静态文件生成的文件夹
PROJECT_NAME="blog.tar.gz"       # 生成文件名

# 确保脚本抛出遇到的错误
set -e

git add .
git commit -m "部署"
git push origin master

# 生成静态文件
npm run build

# 进入生成的文件夹
cd $GENERATE_PATH
echo "==================本地dist文件夹生成压缩包===================="
tar -cvzf $PROJECT_NAME dist

# window解压缩包
# tar -zxvf archive.tar -C "D:\Apps"

echo "==================本地文件上传服务器===================="
scp -r $PROJECT_NAME root@$PUSH_IP:$EXCUTE_PATH
echo "==================上传完成===================="

echo "==================解压===================="
ssh  root@$PUSH_IP "cd $EXCUTE_PATH;rm -rf /dist;tar -xzvf $PROJECT_NAME;rm -rf $PROJECT_NAME;exit"

echo "==================删除===================="
cd $CURRENT_PATH
rm -rf $GENERATE_PATH/dist
rm -rf $GENERATE_PATH/$PROJECT_NAME
echo "==================完毕===================="

Lucking