OpenWrt LuCi-SSH

# はじめに
::: note
### 初心者対応構成
- スクリプトでの自動設定
- UCIとLuCi及びWinSCPにて比較しながら作業がおススメ
:::

::: note
### [PowerShell](https://learn.microsoft.com/ja-jp/powershell/scripting/what-is-windows-powershell?view=powershell-7.4)で[SSHアクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)
- [PowerShellの開始](https://learn.microsoft.com/ja-jp/powershell/scripting/windows-powershell/starting-windows-powershell?view=powershell-7.4) (キー入力): `Win`+`x` > `a` > `はい`
※[WindowsへのPowerShellのインストール](https://learn.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.4)（Windows11は標準搭載）

```sh
ssh root@192.168.1.1
```

<details><summary>ssh root@192.168.1.1の起動ショートカット作成（デスクトップ）</summary>

```sh
$LNKFILE = ([Environment]::GetFolderPath("Desktop") + "\192.168.1.1.lnk")
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$LNKFILE")
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$Shortcut.Arguments = '-windowstyle hidden -ExecutionPolicy RemoteSigned "start ssh root@192.168.1.1"'
$Shortcut.IconLocation = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe,0"
$Shortcut.WorkingDirectory = "."
$Shortcut.Save()

```

- `強制的に貼り付け`
- `yes`

---

</details>

<details><summary>SSHログイン出来ない場合:exclamation:</summary>

`C:\Users\yourusername\.ssh\known_hosts` ※Windows隠しファイル
```powershell:powershell
Clear-Content .ssh\known_hosts -Force

```
---

</details>

:::

# クライアントツール (Windows用)

::: note

### [SSHアクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)

#### [PowerShell](https://learn.microsoft.com/ja-jp/powershell/scripting/what-is-windows-powershell?view=powershell-7.4)で[SSHアクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)

- [PowerShellの開始](https://learn.microsoft.com/ja-jp/powershell/scripting/windows-powershell/starting-windows-powershell?view=powershell-7.4) (キー入力)：`Win`+`x` > `a` > `はい`
※Windows7以降標準搭載

```sh
ssh root@192.168.1.1
```

<details><summary>ssh root@192.168.1.1のショートカット作成（デスクトップ）</summary>

```powershell:powershell
$DESKTOP = ([Environment]::GetFolderPath("Desktop") + "\192.168.1.1.lnk")
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$DESKTOP")
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$Shortcut.Arguments = '-windowstyle hidden -ExecutionPolicy RemoteSigned "Start-Process ssh root@192.168.1.1"'
$Shortcut.IconLocation = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe,0"
$Shortcut.WorkingDirectory = "."
$Shortcut.Save()

```

- `強制的に貼り付け`
- `yes`

---

</details>

<details><summary>SSHログイン出来ない場合:exclamation:</summary>

known_hostsクリア
- `C:\Users\yourusername\.ssh\known_hosts` ※Windows隠しファイル
```powershell:powershell
Clear-Content .ssh\known_hosts -Force

```
---
OpenSSHのインストール
※Windows 10 Fall Creators Update(1709)以降標準搭載
- 機能の確認
```powershell:powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

```
- 機能のインストール
```powershell:powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

```
---

</details>

#### [TeraTerm](https://teratermproject.github.io/)
  - 設定
    - 端末 > 改行コード`LF`
    - フォント > フォント > 文字セット`日本語` >  `OK`
    - 設定の保存 >  `保存`

### SFTPクライアント

#### [WinSCP](https://winscp.net/eng/download.php)

:::

# SSH

::: note
### [luci-app-ttyd](https://openwrt.org/packages/pkgdata/luci-app-ttyd)

WEBからSSHが使える
かなり便利
```sh
opkg update
opkg install luci-app-ttyd
opkg install luci-i18n-ttyd-ja

```
- [http://192.168.1.1:7681](http://192.168.1.1:7681/)

使い方提案
- [新規設定用 オールインワンスクリプト](https://qiita.com/site_u/items/c6a50aa6dea965b5a774)起動

```sh
COMMAND='利用したいコマンド'

uci set ttyd.@ttyd[0]=ttyd
uci set ttyd.@ttyd[0].interface='@lan'
uci set ttyd.@ttyd[0].command='/bin/login -f root'
uci set ttyd.@ttyd[0].ipv6='1'
uci set ttyd.@ttyd[0].debug='7'
uci set ttyd.@ttyd[0].url_arg='1'
uci add_list ttyd.@ttyd[0].client_option='fontSize=25'
uci add_list ttyd.@ttyd[0].client_option='theme={"background": "black"}'
uci add_list ttyd.@ttyd[0].client_option='titleFixed=TTYD'
uci set ttyd.ttyd=ttyd
uci set ttyd.ttyd.port='8888'
uci set ttyd.ttyd.interface='@lan'
uci set ttyd.ttyd.ipv6='1'
uci set ttyd.ttyd.debug='7'
uci set ttyd.ttyd.command=${COMMAND}
uci set ttyd.ttyd.url_arg='1'
uci add_list ttyd.ttyd.client_option='fontSize=25'
uci add_list ttyd.ttyd.client_option='theme={"background": "blue"}'
uci add_list ttyd.ttyd.client_option='titleFixed=COMMAND'

uci commit ttyd
service ttyd restart

```
- [http://192.168.1.1:8888](http://192.168.1.1:7681/)
:::

::: note
### [luci-app-commands](https://openwrt.org/packages/pkgdata/luci-app-commands)
```sh
opkg update
opkg install luci-app-commands
opkg install luci-i18n-commands-ja

```
使い方提案
- [OCNバーチャルコネクト + ニチバン対策 全自動構成@bash](https://qiita.com/site_u/items/298a6c2c4d6797e38cd0)
```sh
opkg update
opkg install bash
opkg install map
# config-softwire
wget --no-check-certificate -O /usr/sbin/map-e-ocn.sh https://raw.githubusercontent.com/site-u2023/config-softwire/main/map-e-ocn.sh
# map-e
cp /lib/netifd/proto/map.sh /lib/netifd/proto/map.sh.bak
wget --no-check-certificate -O /lib/netifd/proto/map.sh https://raw.githubusercontent.com/site-u2023/map-e/main/map.sh.new

uci set luci.@command[0]=command
uci set luci.@command[0].name='OCNバーチャルコネクト自動設定'
uci set luci.@command[0].command='bash map-e-ocn.sh 2> /dev/null'

```

[カスタムコマンド/ダッシュボード](http://192.168.1.1/cgi-bin/luci/admin/system/commands/dashboard)
- `実行`

:::