Skip to content

IgorKowalczyk/discord-ssh

Repository files navigation

Discord.ssh


πŸ’‘ Why I made this?

My ISP won't let me open some ports on my router so I can't use SSH to connect to my server.
I created this bot to run shell commands on my server remotely through Discord.

I can also use it to run commands on my local machine.

~Modern problems require modern solutions

πŸ“¦ Installation

  1. Clone the repo git clone https://github.com/igorkowalczyk/discord-ssh.git
  2. Install dependencies pnpm install or npm install
  3. Create .env file in the root directory
  4. Copy the content from .env config
  5. Fill the .env file with your data
  6. Run the bot pnpm run start or npm run start (or pnpm run dev or npm run dev for development)
  7. Invite the bot to your server (see Discord Developer Portal)
  8. Send command in channel which you set in .env file
  9. Wait for the response, that's it!

Important

You have to enable Message Content intent in your Discord Developer Portal to use this bot!

Note

Bot will not respond to messages in other channels or other members than you (bot owner) unless you change it in the .env file or in the code

πŸ” .env config

# Copy this file to .env and fill in the values.

CHANNEL_ID="Discord channel ID"
OWNERS_IDS="ID 1,ID 2,ID 3"
TOKEN="Discord bot token"
CUSTOM_CWD="Default path to the bot's working directory (optional - remove this line if you don't need it)"
Variable Description Required
CHANNEL_ID Channel ID where bot will listen for commands βœ… Yes
OWNERS_IDS Users IDs who can use the bot (separated by ,) βœ… Yes
TOKEN Discord bot token βœ… Yes
CUSTOM_CWD Default directory for SSH commands (Default: /) ❌ No

Note

You can get your Discord user ID/Cannel ID by enabling Developer Mode in Discord settings and right-clicking on your profile or channel.

πŸ”© Limitations

  • sudo / su commands are not supported, and probably never will be (for security reasons).
  • Text inputs are not supported (e.g. nano), but you can use echo to create/edit files.
  • Dynamic output is not supported (e.g. top, htop).
  • Colored output is not supported and will be stripped. Some commands may not work as expected.

Note

Changing directory (cd) is supported when it's at the beginning of a command (e.g. cd /var/www && ls)

🌌 Future plans

  • Add support for ssh connection
  • Add support for dynamic output
  • Add support for text inputs

⁉️ Issues

If you come across any errors or have suggestions for improvements, please create a new issue here and describe it clearly.

πŸ“₯ Pull Requests

When submitting a pull request, please follow these steps:

  • Clone this repository https://github.com/IgorKowalczyk/discord-ssh.git
  • Create a branch from main and give it a meaningful name (e.g. my-awesome-new-feature).
  • Open a pull request on GitHub and clearly describe the feature or fix you are proposing.

πŸ“‹ License

This project is licensed under the MIT. See the LICENSE file for details