mac或win系统如何用私钥.key文件登录linux
有时购买服务器后,只给了个.key文件让你登录远程linux
Mac先执行以下命令设置文件权限,windows无需此操作
chmod 600 key-file-path.key
然后执行如下命令即可登录
ssh -i 证书路径 用户名@IP地址 -p 端口号
如果端口为22,则-p参数可忽略
有些user可以直接是root,有些不是
如果登录的不是root想切换到root,可以执行
sudo -i
有时购买服务器后,只给了个.key文件让你登录远程linux
Mac先执行以下命令设置文件权限,windows无需此操作
chmod 600 key-file-path.key
然后执行如下命令即可登录
ssh -i 证书路径 用户名@IP地址 -p 端口号
如果端口为22,则-p参数可忽略
有些user可以直接是root,有些不是
如果登录的不是root想切换到root,可以执行
sudo -i
这个方法需要nvue,你可以新建项目时,把默认的index.vue改成index.nvue,然后用下面的代码全部覆盖
<script>
export default {
onLoad() {
const url = 'http://tools.qvdd.cn/request-headers' // 改成你自己的链接
const uaAppend = 'Your_UA' // 改成你自己的ua
plus.navigator.setUserAgent(plus.navigator.getUserAgent() + ' ' + uaAppend)
const sysInfo = uni.getSystemInfoSync()
const styles = { // html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewStyles
width: sysInfo.safeArea.width,
top: sysInfo.statusBarHeight,
bottom: 0,
scalable: true, // 默认不能缩放,在访问PC页面时体验不好
errorPage: '/hybrid/html/error.html' // 网页打不开时打开这个页面
}
const wv = plus.webview.open(url, 'id', styles)
plus.key.addEventListener('backbutton', ()=>{
wv.canBack((e)=>{
if (e.canBack) {
wv.back()
} else {
uni.showModal({
title: '是否退出App?',
success: (res) => {
if (res.confirm) {
plus.runtime.quit()
}
}
})
}
})
})
}
}
</script>
其中的/hybrid/html/error.html可以自己放个漂亮的404模板,我是简单这样写的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>error</title>
</head>
<body>
<div style="padding: 15px;">
网页打开失败
</div>
</body>
</html>
pages.json里设置"navigationStyle": "custom",隐藏顶部标题栏
网上找的node发邮件,用到最多的是nodemailer,于是利用百度出来的代码,直接运行在uniCloud,本地运行发送成功,但是云端一直报错。
仔细看了报错内容,提到Thread,所以猜测代码里新建了线程去发邮件。
为了找到如何用当前线程发,第一时间想到的是nodemailer的官方文档:https://nodemailer.com/about/
结合官方文档,写了个可以在uniCloud云端正常发邮件,并且亲测成功的代码:
'use strict';
const nodemailer = require('nodemailer') // 使用前先npm install nodemailer
exports.main = async (event, context) => {
let transporter = nodemailer.createTransport({
host: 'smtp.126.com',
secureConnection: true,
port: 465,
secure: true,
auth: {
user: '[email protected]',
pass: 'SMTP授权码'
}
})
const info = await transporter.sendMail({
from: '"邮箱昵称"<[email protected]>',
to: '[email protected]',
subject: '主题',
html: '<h1>HTML代码</h1>',
text: '文本'
})
if (info.messageId) {
return {code: 0, msg: '发送成功'}
} else {
return {code: 1, msg: '发送失败', info}
}
}
代码里最关键的是await transporter.sendMail这行,这样写才是在当前线程发
百度上找到的大部分人是这么写的:
transporter.sendMail(
{
from: '"邮箱昵称"<[email protected]>',
to: '[email protected]',
subject: '主题',
html: '<h1>HTML代码</h1>',
text: '文本'
},
(error, info) => {
if (error) {
return console.error(error);
}
console.info(info)
}
)
这样写的话会新建线程,这在普通的node环境当然没错,但是uniCloud却报了关于线程的错误,猜测是uniCloud不允许多线程
据说163或者126之类的普通邮箱,个人SMTP每天最多只能发50封,所以如果你是用在项目里,可以考虑阿里云的邮件推送,到达率高,速度快,而且又便宜,每日前200封还免费:链接直达